基本的に、xaml で行ったことを C# に変換したいと考えています。これは、次の問題に関連しています: xaml の文字列をプロパティにバインドする
私の場合にプロキシが必要で使用される理由は次のとおりです 。 -遺伝性の/
CollectionContainer にバインドできるようにするプロキシ クラス:
public class BindingProxy : Freezable
{
#region Overrides of Freezable
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
#endregion
public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
// Using a DependencyProperty as the backing store for Data. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
}
コントロールのリソースで定義されたプロキシ:
<UserControl.Resources>
<global:BindingProxy x:Key="proxy" Data="{Binding }" />
</UserControl.Resources>
最終的に C# に変換したい Xaml コード:
<ComboBox ItemsSource="{Binding NameCollection}">
<ComboBox.ItemsSource>
<CompositeCollection>
<x:StaticExtension Member="VM:NameClass.NoName " />
<CollectionContainer Collection="{Binding Data.NameCollection, Source={StaticResource proxy}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
View Model コレクションには入れたくないが、ユーザーに表示したい文字列定数:
public class NameClass
{
public const string NoName = "[None]";
}