2014-10-29 56 views
0

我在代碼的後面(.cs)中定義了一個依賴項屬性,我想從它的視圖模型中綁定一個值。我希望我可以去到.xaml並將其綁定到窗口定義的頂部,並且其他屬性(如DataContext,Title等)已被填充。看起來這是不可能的,因爲顯示在那裏的唯一屬性是基類窗口類型的屬性,而不是我正在使用的視圖的特定實例。窗口級別依賴項屬性(視圖的代碼背後),它可以綁定到視圖的XAML中嗎?

我想這樣做的原因是,如果我的ViewModel定義了一個命令,我希望能夠從我的視圖後面的代碼中啓動該命令。我不想將DataContext轉換爲特定的ViewModel類型以獲取該命令的句柄。我顯然可以發送一條消息(我使用MVVM Light)來做到這一點,它似乎也許我可以做到這一點,而無需通過依賴屬性進行消息傳遞。

回答

3

您可以通過如下所示的樣式設置器來設置裝訂。請注意Setter Property中的完全限定屬性名稱。您也可以將local:MainWindow設置爲樣式的TargetType以避免完全限定屬性名稱,但XAML設計器可能會抱怨。

<Window x:Class="SomeNamespace.MainWindow" 
     xmlns:local="clr-namespace:SomeNamespace" ...> 
    <Window.Style> 
     <Style> 
      <Setter Property="local:MainWindow.SomeProperty" 
        Value="{Binding ViewModelProperty}"/> 
     </Style> 
    </Window.Style> 
    ... 
</Window> 
相關問題