我有一個ListView,允許用戶通過上下文菜單(它的行爲像一個簡化版本的Windows資源管理器)更改ViewBase。WPF:從ListView查找父窗口ViewBase
<ListView Name="lv" Grid.Row ="0" Grid.Column ="1" >
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="View1" Click="SwitchViewMenu"/>
<MenuItem Header="View2" Click="SwitchViewMenu"/>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<local:View1 />
</ListView.View>
</ListView>
的DataTemplates在一個Generic.XAML定義的ViewBases文件,以及i使用下面的函數來改變所選擇的視圖:
void ChangeView(string str)
{
if (str == "View1")
{
lv.View = lv.FindResource("View1") as ViewBase;
}
else if (str == "View2")
{
lv.View = lv.FindResource("View2") as ViewBase;
}
}
問題:
我在所有DataTemplates中都有一個自定義的CheckBox控件,它附帶了一個預定義的點擊事件,但是當我嘗試向上移動CheckBox的父母時,最高的l evel我可以達到的是在DataTemplate使用中的Parenting Grid。
我需要訪問的是父窗口本身。
注: 我試圖依賴項屬性添加到自定義的CheckBox控件,並將其綁定到發送的對象,有一個窗口引用作爲其價值的額外定義的變量(數據模板的項目數據類型的對象) ,但即使所有其他依賴項屬性/值都已綁定,我仍然收到null。
哈哈!我實際上最終找到了一個解決方法,但是你的解決方案能夠以更簡單的方式完美工作,而且代碼更少。 (+1)。 – 2010-09-15 07:13:35