2010-05-05 18 views
9

अंदर बटन पर .Command संपत्ति की स्थापना मैं एक UserControl कि एक बटन और कुछ अन्य नियंत्रण शामिल है मिल गया है बटन की कमांड प्रॉपर्टी पर जाएं:WPF UserControls UserControl

<my:GreatUserControl TheButton.Command="{Binding SomeCommandHere}"> 
</my:GreatUserControl> 

बेशक, "TheButton.Command" चीज़ काम नहीं करती है।

तो मेरा सवाल है: XAML का उपयोग करना, मैं अपने उपयोगकर्ता नियंत्रण के अंदर बटन की कॉमांड प्रॉपर्टी कैसे सेट कर सकता हूं?

उत्तर

18

अपने उपयोगकर्ता नियंत्रण पर एक निर्भरता संपत्ति जोड़ें और उस पर बटन की कमांड प्रॉपर्टी को बाध्य करें।

तो अपने GreatUserControl में:

public ICommand SomeCommand 
{ 
    get { return (ICommand)GetValue(SomeCommandProperty); } 
    set { SetValue(SomeCommandProperty, value); } 
} 

public static readonly DependencyProperty SomeCommandProperty = 
    DependencyProperty.Register("SomeCommand", typeof(ICommand), typeof(GreatUserControl), new UIPropertyMetadata(null)); 

और अपने GreatUserControl के XAML में:

<UserControl 
    x:Class="Whatever.GreatUserControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Name="me" 
    > 
    <Button Command="{Binding SomeCommand,ElementName=me}">Click Me!</Button> 
</UserControl> 

तो अपने बटन UserControl पर ही आदेश को बांधता है। अब आप इसे अपनी मूल विंडो में सेट कर सकते हैं:

<my:GreatUserControl SomeCommand="{Binding SomeCommandHere}" /> 
+0

धन्यवाद, मैट। मुझे निर्भर तरीके से एहसास हुआ कि मैं निर्भरता प्रॉपर्टी पंजीकृत करके ऐसा कर सकता हूं, लेकिन मुझे उम्मीद थी कि एक आसान तरीका था (उदाहरण के लिए बटन को नियंत्रण की संपत्ति के रूप में उजागर करें) फिर इसे एक्सएएमएल में सेट करें। वैसे भी। इससे चल जाएगा। जवाब के लिए धन्यवाद। –

+3

जब आप अपने उपयोगकर्ता नियंत्रण में DataContext जोड़ते हैं तो यह टूट जाता है। – Nicholas

+10

रोगी: "जब मैं ऐसा करता हूं तो दर्द होता है।" डॉक्टर: "ऐसा करना बंद करो।" मुझे आरओएफएल बनाने के लिए –

संबंधित मुद्दे