2012-04-20 96 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

相关问题