在彈出的窗口中我綁定了一個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