2012-04-20 137 views
0

您好我正在使用Silverlight的Win 8 metro應用程序buid。在另一個控件中禁用一個控件的按鈕

我有兩個控制控制1和控制2

控制2是內部對照1

控制2具有ListView和對照1具有的按鈕。點擊listview必須禁用Control1中的按鈕。

我試圖從代碼實現這一目標背後使用

public bool OverriddenFlag 
{ 
    get { return _overriddenFlag; } 
    set 
    { 
     _overriddenFlag= value; 
     NotifyPropertyChanged("OverriddenFlag"); 
    } 
} 

,並在XAML

<Button x:Name="ShowDetails" FontWeight="bold" FontSize="12" Content="+" click="ShowDetails_Click" IsEnabled="{Binding OverriddenFlag, Mode=OneWay}"/> 

但它並沒有禁用按鈕。 如何禁用按鈕。任何想法?

+1

你似乎很困惑在這裏。如果你正在做一個Windows8 Metro應用程序,你既沒有Silverlight也沒有Windows Phone 7(儘管你可能在做XAML和C#)。如果你正在做Silverlight應用程序,那麼你不會做Windows8應用程序。 – jv42 2012-04-21 09:52:22

回答

0

OverridenFlag應在控制2依賴屬性像這樣:

public static readonly DependencyProperty OverriddenFlagProperty = DependencyProperty.Register("OverriddenFlag", 
     typeof(bool), typeof(Control2), null); 

    public bool OverriddenFlagProperty 
    { 
     get { return (bool)GetValue(OverriddenFlagProperty); } 
     set 
     { 
      SetValue(OverriddenFlagProperty, value); 
     } 
    } 

然後嘗試對矯正你的綁定:

<Button x:Name="ShowDetails" IsEnabled="{Binding OverriddenFlag, ElementName=Control2}"/> 
+0

感謝您的反饋。我還沒有嘗試過你的代碼,但我會嘗試。我做了像frameworkelement這樣的'code' FrameworkElement fe =(FrameworkElement)this.Parent; (fe.GetType()。Name!=「Control」) fe =(FrameworkElement)fe.Parent; Button _button =(Button)fe.FindName(「button」); _button.IsEnabled = false; @託尼 – user1030947 2012-04-22 05:40:16

+0

嗨,託尼,我試着像你說的,但它並沒有改變按鈕的狀態,即使在control2中點擊一個項目。在control2中,我設置了OverriddenGlag = true; – user1030947 2012-04-22 13:18:03

相關問題