2011-07-04 42 views
0

當我在組合框中選擇了值時,我必須隱藏另一個控件。我寫下如下所示的代碼。請糾正我在哪裏犯了錯誤。無法使用MVVM隱藏WPF中的控件

查看代碼:

<ComboBox x:Name="cboShowRuleWhere" Height="20" Width="200" ItemsSource="{Binding Source={StaticResource listedView}, Path=FilterRules}" DisplayMemberPath="RuleName" SelectedValuePath="RuleId" SelectedValue="{Binding Source={StaticResource listedView}, Path=SelectedRuleName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" ></ComboBox> 
<ComboBox Height="21" HorizontalAlignment="Left" Margin="6,4,0,0" x:Name="cboRuleCondtion" Visibility="{Binding Path=IsButtonVisible,Converter={StaticResource BoolToVisible}}" VerticalAlignment="Top" Width="212" /> 

視圖模型代碼:

private DataTable m_selectedRuleName; 
    public DataTable SelectedRuleName 
    { 
     get 
     { 
      return m_selectedRuleName; 
     } 
     set 
     { 
      m_selectedRuleName = value; 
      base.RaisePropertyChangedEvent("SelectedRuleName"); 
     } 
    } 


    private bool _IsButtonVisible; 
    public bool IsButtonVisible 
    { 
     get { return _IsButtonVisible; } 
     set 
     { 
      _IsButtonVisible = value; 
      base.RaisePropertyChangedEvent("IsButtonVisible"); 
     } 
    } 

在那裏我有糾正?請儘快幫助我。在此先感謝..

回答

1

這裏沒有太多東西要繼續。例如,您在哪裏根據您的規則標準設置IsButtonvisible?這裏有一些想法:

1)不要爲IsButtonVisible創建一個支持字段。相反,讓它返回正確的分析。

public bool IsButtonVisible { get { return SelectedRuleName == "IsVisibleRule"; } } 

2)您可以從任何地方觸發Notify Propery Changed事件。在這種情況下,你想要的IsButtonVisible結合每次重新評估的SelectedRuleName變化:

private DataTable m_selectedRuleName; 
public DataTable SelectedRuleName 
{ 
    get 
    { 
     return m_selectedRuleName; 
    } 
    set 
    { 
     m_selectedRuleName = value; 
     base.RaisePropertyChangedEvent("SelectedRuleName"); 
     base.RaisePropertyChangedEvent("IsButtonVisible"); 
    } 
} 

3)是真的SelectedRuleName一個DataTable?這對我來說看起來很奇怪,因爲它表示多行。這將是一個較長的帖子,但我會完全避免DataTable,並將ComboBox項目源更改爲ObservableCollection。 「SelectedRuleName」的類型是T(不是DataTable)。

4)沿着相同的路線,我發現使用SelectedItem而不是SelectedValue取得了更大的成功。

我希望有一些幫助。

+0

我知道它已經有一段時間了,提問者可能從未看到過您的回覆,但是這對我很有幫助,謝謝! – JoeB

+0

很高興幫助某人:-) –