在弹出的窗口中我绑定了一个checkbox.IsChecked
模型,但是我希望从窗口显示时的xaml代码后面检查它的状态。在Windows加载事件后面的代码中通过名称检查复选框时,它尚未设置。我需要做一些特定于UI的事情,这就是为什么我需要知道窗口打开时checkboxes的值是什么,而且我无法从checkbox.IsChecked绑定的模型中执行此操作。什么时候绑定实际发生
模型上的属性在弹出窗口打开之前很久就设置好了,所以它不是绑定不存在的问题。我认为,一旦Loaded事件触发,窗口将准备好使用绑定和所有的绑定,但似乎并非如此。
的XAML:
<RefinedRibbonControls:RefinedRibbonGroup Header="Show Graphs">
<StackPanel x:Name="panelVisibilities">
<CheckBox Content="Show/hide" x:Name="myCheckBox"
IsChecked="{Binding Path=Processor.Model.IsItemVisible}"
Click="GraphVisibilityClickEvent"
HorizontalAlignment="Left"/>
...etc
物业型号:
public bool IsItemVisible
{
get { return _isItemVisible ; }
set
{
if (_isItemVisible != value)
{
_isItemVisible = value;
_propertyChanger.FirePropertyChanged(this, m => m.IsItemVisible);
}
}
}
事件在XAML代码隐藏:
private void WindowLoadedEvent(object sender, RoutedEventArgs e)
{
if(myCheckBox.IsChecked.Value)
{
// Do UI Related Stuff
}
}
的结合工作正常和值出现在显示窗口,问题是我无法获得窗口加载事件中绑定的值。
编辑:可能的解决方案我找到了,但我不确定它是否是最好的方法。 我在后面的xaml代码的构造函数中调用了以下方法。
private void SetupInitialVisibility()
{
//Fire after everything is loaded.
Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() =>
{
IEnumerable<CheckBox> elements = this.panelVisibilities.Children.OfType<CheckBox>().ToList();
foreach (CheckBox checkBox in elements)
{
if (checkBox.IsChecked != null && checkBox.IsChecked.Value == false)
{
//Do work
}
}
}));
}
发现在:https://stackoverflow.com/a/1746975/1253746
发布您的代码和XAML – 2013-03-05 20:18:48
提供代码.... – Dom 2013-03-05 20:32:29
已提供代码。 – 2013-03-05 20:33:53