2010-09-03 60 views
0

我試圖添加一些默認文本到組合框,當沒有選定項目時將顯示。我正在使用一種風格來實現這個功能,當組合首次加載時效果很好。WPF XamComboEditor/ComboEditorTool - 設置默認文本

<Style TargetType="{x:Type igRibbon:ComboEditorTool}" x:Key="PleaseSelect"> 
<Style.Triggers> 
<Trigger Property="SelectedIndex" Value="-1"> 
<Setter Property="Text" Value="Please Select" /> 
</Trigger> 
</Style.Triggers> 
</Style> 

<igRibbon:ComboEditorTool Style="{StaticResource PleaseSelect}" 
ItemsSource="{Binding MyItems}" SelectedItem="{Binding MySelectedItem }" /> 

但是當組合的選擇的項目被重置(通過設置爲null,它設置的SelectedIndex爲-1),它無法顯示默認的文本(即使觸發不火),這可能是這是爲什麼?有沒有更好的方法來重置所選項目?

乾杯

這裏是我使用的解決方案,這要歸功於@AlexPaven的想法:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value == null) 
      { 
       return "Please Select"; 
      } 
      else 
      { 
       return value; 
      } 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value is string && ((string)value) == "Please Select") 
      { 
       return null; 
      } 
      else 
      { 
       return value; 
      } 
     } 

回答

0

我不熟悉的Infragistics的套件,但我懷疑這是同樣的事情使用常規的組合框:由於您在SelectedItem上具有綁定,因此不能將Text設置爲公然違反該綁定的項目;文本是SelectedItem的表示。如果SelectedItem爲null,那麼Text也必須是null的表示形式。我猜測(沒有嘗試它,我可能只是明顯錯誤)你可以用IValueConverter完成這個工作,當傳遞的對象爲null時返回一個自定義字符串(否則返回對象不變),在SelectedItem綁定上設置。

+0

感謝您的回答。我試過以下轉換器,但它不起作用: 公共對象轉換(對象值,類型targetType,對象參數,System.Globalization.CultureInfo文化) { if(value == null) return「Please Select 「;其他 返回值; } 組合不顯示任何東西。 – ChrisWay 2010-09-03 13:39:48

+0

再次審視這一點後,轉換器的想法起作用。我將添加代碼作爲一個單獨的答案,因此它是可讀的。 – ChrisWay 2011-02-24 11:20:35