2012-01-05 45 views
0

我試圖將轉換器參數設置爲ItemTemplate內部項目的屬性。 由於ConverterParameter不是依賴項屬性綁定不起作用。
但我真的不需要綁定,只需設置一次就足夠了,因爲它永遠不會改變。ConverterParameter:在ItemTemplate中設置它

<ItemsControl ItemsSource="ItemsWithTypeProperty"> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
    <RadioButton IsChecked="{Binding SelectedItem.Base.Type, Converter={l:IsEqualConverter}, Mode=TwoWay, ConverterParameter={Type}}" /> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
</ItemsControl> 

IsEqualConverter:
轉換:該值進行比較,該參數,並返回結果
ConvertBack:如果該值是真則返回參數

ItemTemplate中的DataContext的是包含類名稱爲「Type」的Property。
它的類型是對象。

有沒有一種方法可以將{Type}替換爲僅將其設置爲(DataContext。)的類型?如果是的話如何?

回答

1

我不知道究竟是什麼類型。它是對象的System.Type嗎?它總是一個固定的類型?你可以寫類似:

ConverterParameter={x:Type local:TypeToCompare} 

如果類型不是恆定的,你可以重新寫你的轉換器來實現IMultiValueConverter並使用MultiBinding

+0

否類型不恆定。這種情況下的類型意味着具有DataContext對象的名稱「Type」的Property。多重綁定也是我的第一個想法,但問題是我無法將其轉換回來。 ConvertBack只提供一個布爾值,並不足以將其轉換回我需要的對象。 – Arokh 2012-01-05 17:05:51

+0

OK,在這種情況下,我會說要麼回到繪圖板或者如果你真的必須,你有可以使ConverterParameter綁定的黑客。請參閱http://marlongrech.wordpress.com/2008/08/03/my-wish-came-true-i-can-now-use-databinding-in-a-converterparameter/ – 2012-01-05 20:18:36

0

嘗試使用此:

......, ConverterParameter=Type}" /> 

並在您的轉換:

if ((string)parameter == "Type")) 
    { 
     //Do some stuff 
    } 
+0

這種情況下的類型應該是Datacontext對象的屬性Type的值。 – Arokh 2012-01-05 17:01:00

相關問題