2010-04-20 71 views
0

試想:MVVM結合,來選擇RadOutlookBarItem

[RadOutlookBarItem1] [RadOutlookBarItem2] [RadOutlookBar] [CONTENCONTROL]

我想要實現的是:

用戶選擇的RadOutlookBarItem的一個。項目的標籤綁定,如:

Tag="{Binding SelectedControl, Mode=TwoWay}" 

MVVM物業

public string SelectedControl 
{ 
    get { return _showControl; } 
    set 
    { 
     _showControl = value; 
     OnNotifyPropertyChanged("ShowControl"); 
    } 
} 

ContentControl中有多個CustomControls和那些知名度勢必像:

<UserControl.Resources> 
     <Converters:BoolVisibilityConverter x:Key="BoolViz"/> 
    </UserControl.Resources> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Views:ViewDocumentSearchControl Visibility="{Binding SelectedControl, Converter={StaticResource BoolViz}, ConverterParameter='viewDocumentSearchControl'}"/> 
     <Views:ViewStartControl Visibility="{Binding SelectedControl, Converter={StaticResource BoolViz}, ConverterParameter='viewStartControl'}"/> 
    </Grid> 

轉換器:

公共對象轉換(對象值,類型targetType,對象參數,CultureInfo文件基於「對象值」值

System.Diagnostics.Debugger.Break(); 
    return Visibility.Collapsed; 
} 

現在,邏輯對象值始終設置爲null Visibility.Visible:E) {// 說到這裏的邏輯部分...應該返回Visibility.Collapsed。所以這裏是我的問題:我怎樣才能將一個值放入RadOutlookBarItem標籤的SelectedControl變量中。我的意思是類似於

Tag="{Binding SelectedControl, Mode=TwoWay, VALUE='i.e.ControlName'"} 

因此,我可以決定,使用轉換方法,是否將特定控件的可見性設置爲摺疊或可見?

幫助的感謝

基督教

---從洛朗解決方案---

是的,這就是我想要的,不幸的是VS.NET 2010 /混合4RC這樣實施之後崩潰了:

<Views:ViewDocumentSearchControl Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource BoolViz}}"/> <Views:ViewStartControl Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource BoolViz}}"/> 

每當我在Blend/VS.NET中打開XAML時,我得到的XYZ已停止工作。將ValueConverter的返回值更改爲Visibility.Visible,仍然相同。不知道。不管怎麼說,還是要謝謝你!基督教

---我的(臨時)解決方案/解決方法---

好吧,我結束了此解決方案:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value != null && parameter != null) 
      { 
       var val = (string) value; 
       var ctrl = (string) parameter; 
       if (val.Equals(ctrl)) 
       { 
        return Visibility.Visible; 
       } 
       return Visibility.Collapsed; 
      } 
      return Visibility.Collapsed; 
     } 

,並設置RadOutlookBarItem在代碼隱藏的.TAG。 ..

回答

0

這聽起來像你想通過當前項目到轉換器並返回一個可見性。有可能我沒有完全理解你的意思,但是如果是這樣的話,這應該適用於你:

Visibility = {Binding RelativeSource = {RelativeSource Self},Converter = {StaticResource BoolViz}}

「value」參數將在第一種情況下設置爲ViewDocumentSearchControl,在第二種情況下設置爲ViewStartControl。

這是你在找什麼?

乾杯, 洛朗

+1

@Christian:請用一些輔助註釋代碼添加到您的問題,而不是將其包括在評論它的格式非常糟糕。它可能是論壇上最突出的差異之一,即編輯問題和答案是可能的並且是積極鼓勵的。 – AnthonyWJones 2010-04-20 08:45:29