我有一個WPF C#應用程序,其中包含一些視圖(xaml),尤其是選項視圖。在這個視圖中有一個複選框來隱藏所有按鈕。隱藏WPF應用程序中的所有按鈕
問題,該怎麼做?
我有一個MainStyle.xaml
這是一個ResourceDictionary
幷包含所有樣式,轉換器等。我的方法是設置樣式在這個文件中,如:
<Style TargetType="Button">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
這工作,但用戶必須決定是否按鈕是可見或不可見。所以我必須將樣式綁定到複選框。
第一步將把樣式綁定到ResourceDictionary(MainStyle.xaml)後面的代碼。但它不起作用。我已經將構造函數中的屬性設置爲false,但按鈕是可見的。
MainStyle.xaml
<Style TargetType="Button">
<Setter Property="Visibility"
Value="{Binding ButtonsEnabled, RelativeSource={RelativeSource AncestorType=ResourceDictionary}, Converter={StaticResource BooleanVisibilityConverter}}" />
</Style>
代碼隱藏(MainStyle.xaml.cs)
public partial class BaseStyle : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public BaseStyle()
{
InitializeComponent();
ButtonsEnabled = false; // for testing
}
private Boolean buttonsEnabled;
public bool ButtonsEnabled
{
get { return buttonsEnabled; }
set
{
buttonsEnabled = value;
NotifyPropertyChanged("ButtonsEnabled");
}
}
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
如果綁定工作,第二步是綁定在風格ResourceDictionary到選項視圖。
首先檢查您的VS輸出窗口,以搜索失敗的綁定。然後啓動Snoop並檢查Visibility屬性中是否有失敗的按鈕(以紅色突出顯示)。如果你能發現真正的失敗,那麼你可以開始正確的解決方案。 – LordWilmore