2012-03-19 93 views
1

我有一個列表,它包含了一些複選框一個簡單的對話框,我想有一個OK按鈕,除非用戶改變設置,將被禁用。在我看來,我有一個OkEnabled屬性,我綁定了按鈕的isEnabled屬性,如果一個複選框更改它的值,它會將OkEnabled設置爲true,但由於某種原因,這並不啓用該按鈕。的IsEnabled綁定到一個布爾

public bool OkEnabled 
{ 
    get 
    { 
     return m_okEnabled; 
    } 
    set 
    { 
     m_okEnabled = value; 
     OnPropertyChanged("OkEnabled"); 
    } 
} 
<Button Content="OK" Style="{StaticResource MyButton}" Height="23" 
     HorizontalAlignment="Left" Margin="20" Name="m_okbutton" 
     VerticalAlignment="Top" Width="75" 
     Click="okClick" IsEnabled="{Binding Path=OkEnabled}"/> 

出於某種原因,當OkEnabled屬性更改狀態OK按鈕狀態不會改變。如果我將IsEnabled屬性綁定到其中一個複選框,則可以在複選框更改時看到按鈕更改狀態。

+2

您是否看到任何綁定錯誤? – 2012-03-19 13:23:09

回答

5

在我看來,我有一個OkEnabled財產

默認情況下,綁定是相對的DataContext,而不是視圖。你是否將視圖設置爲自己的DataContext?

+0

我將對話框的DataContext設置爲包含OkEnabled屬性的視圖。這就是你的意思,對不起,我對WPF來說很陌生。 – user1145533 2012-03-19 13:56:54

+0

是的,這就是我的意思。檢查Visual Studio中的輸出窗口以查看是否存在綁定錯誤 – 2012-03-19 14:11:59

+0

不幸的是,沒有任何綁定錯誤。我不明白爲什麼按鈕會改變狀態,如果我將它綁定到其中一個CheckBox屬性。 – user1145533 2012-03-19 14:21:32

1

正如你說,OkEnabled屬性是視圖。如果您使用MVVM,這是不正確的。它應該在模型中,並將模型對象分配到視圖的數據上下文中。

相關問題