简体   繁体   English

WPF 复选框标签是 null 即使它设置在 XAML

[英]WPF checkbox Tag is null eventhough it is set in XAML

I am trying to make use of the Tag property of the WPF checkbox.我正在尝试使用 WPF 复选框的 Tag 属性。 This is my XAML:这是我的 XAML:

<CheckBox Content="BTC/USD" HorizontalAlignment="Left" Margin="14,0,0,41" 
VerticalAlignment="Bottom" IsChecked="True" Checked="CheckBox_Checked" Tag="btcusd" 
 Unchecked="CheckBox_Checked"/>

When I open my app, CheckBox_Checked is called immediately, but the sender's Tag property is null.当我打开我的应用程序时,会立即调用CheckBox_Checked ,但发件人的 Tag 属性是 null。 Why can this happen?为什么会发生这种情况?

The Checked property is set right on the XAML loading, when you set IsChecked="True". 当您设置IsChecked =“ True”时,将在XAML加载中直接设置Checked属性。 The tag may be loaded only later when the XAML loading code decides to set this property. 仅当XAML加载代码决定设置此属性时,才可以稍后加载该标签。 That's why you can see uninitialized properties. 这就是为什么您可以看到未初始化的属性。

simple Solution for all of these type bugs/errors:所有这些类型的错误/错误的简单解决方案:

1- bool bFormLoaded;//=false; 1- bool bFormLoaded;//=false;

2- at [YourWinOrControlorWPF]_Loaded(object sender, RoutedEventArgs e) 2- 在 [YourWinOrControlorWPF]_Loaded(object sender, RoutedEventArgs e)

add this flag at end of function: bFormLoaded=true;在 function 末尾添加此标志:bFormLoaded=true;

3-at UseDefaultFoldersCB_Checked(...) 3-在 UseDefaultFoldersCB_Checked(...)

add this line if(bFormLoaded==false) return;添加这一行 if(bFormLoaded==false) return;

100% 100%

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM