我真的與ContentPresenter混淆。轉換器返回ContentPresenter - 奇怪的結果
我想構建一個具有輸入資源名稱並返回包含該資源的新實例的新ContentPresenter的轉換器。 似乎是顯而易見的,直接的,但是當我在XAML應用它的內容將...它是用來地方之間跳躍:
轉換器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
var key = value.ToString();
var control = new ContentPresenter();
control.SetResourceReference(ContentPresenter.ContentProperty, key);
return control;
}
該公司預計將包含名稱的字符串的資源並返回新的ContentPresenter與此資源。
在XAML中我使用了兩次:
<Window.Resources>
<Button x:Key="TestButton" Height="20" Width="30" Content="test"/>
<local:SelectResourceConverter x:Key="SelectResourceConverter" />
</Window.Resources>
<StackPanel>
<Button Height="100" Content="{Binding Resource, Converter={StaticResource SelectResourceConverter}}" />
<Button Height="100" Content="{Binding Resource, Converter={StaticResource SelectResourceConverter}}" />
</StackPanel>
'資源' 屬性在後面的代碼定義:
public Window1()
{
InitializeComponent();
DataContext = this;
}
public string Resource
{
get { return "TestButton"; }
}
更改ContentPresenter到ContentControl中給我轉換器中的元素已經在視覺樹中的例外。這給了我一個線索,即SetResourceReference()返回兩次相同的實例,但我不知道如何更改代碼來提供幫助。
您的幫助將非常感激。
這正是我正在尋找的答案。謝謝! – 2010-09-08 07:32:34
而且我意識到按鈕中的按鈕沒有任何意義 - 它只是一個真實生活示例的簡化版本:) – 2010-09-08 08:14:18