私はtelerikのRadComboBoxを持っていますが、いくつかのプロパティの保護されたセッターがあります。私はそれぞれのプロパティを設定できるようにしたいので、私はそのコントロールから派生し、私はカスタムコントロールを作成しました。私も同じことをアイテムのコンポーネントにしました。私の場合はPropertyInfoのSetValueを使用したSilverlightディープコピーのUIElement?
public class RadComboBoxItem : ListBoxItem
{
...
public bool IsHighlighted
{
get
{
return (bool)GetValue(IsHighlightedProperty);
}
protected set
{
this.SetValue(IsHighlightedPropertyKey, value);
}
}
...
}
public class MyCustomComboBoxItem : RadComboBoxItem
{
public void HighlightItem(bool _default)
{
this.IsHighlighted = _default;
}
}
私はRadComboBoxItemsのリストを持っていると私はタイプMyCustomComboBoxItemの新しいリストを作成したいので、私は、データに基づいて、第1のリストから各項目のセッターにアクセスすることができます。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
...
foreach (RadComboBoxItem _item in _listOfRadComboBoxItems)
{
MyCustomComboBoxItem _customCBI = new MyCustomComboBoxItem();
_customCBI.Load(_customCBI.GetType(), _item, true);
_listOfCustomCBI.Add(_newB2);
}
}
}
私は私がやろうとしています何の説明で別のポストを見つけましたが、私の場合は少し異なっており、私はここからLoadメソッドを借り:
Updating ObservableCollection Item properties using INotifyPropertyChanged
public static class ExtentionMethods
{
public static void Load<T>(this T target, Type type, T source, bool deep)
{
foreach (PropertyInfo property in type.GetProperties())
{
if (property.CanWrite && property.CanRead)
{
if (!deep || property.PropertyType.IsPrimitive || property.PropertyType == typeof(String))
{
property.SetValue(target, property.GetValue(source, null), null);
}
else
{
object targetPropertyReference = property.GetValue(target, null);
targetPropertyReference.Load(targetPropertyReference.GetType(), property.GetValue(source, null), deep);
}
}
}
}
}
要約:私がここでやろうとしているのは、TelerikのRadComboBoxからカスタムコンボボックスを作成することです。これには、IsHighlighted依存関係プロパティーセッターが保護されているComboBoxItemsがあります。この制限を回避するためにMyCustomComboBoxItemを作成しましたが、RadComboBoxItemをMyCustomComboBoxItemにコピーすることはできません。
理由:私はそれを設定できるようにしたいので、私はより良い経験でユーザーを助けることができます。
ありがとうございました。
プロパティは依存すべきではありませんプロパティ? –
私のプロジェクトでは、protectedプロパティは依存関係プロパティです。私はこの例を単純化しようとしました。私がやろうとしているのは、TelerikのRadComboBoxに基づいたカスタムComboBoxを作成することです.SoHighlightedプロパティは保護されたセッターを持つものです。ユーザーのためにアイテムを選択する必要はないので、強調表示の仕組みを使用する必要がありますが、最終的な選択に近づけたいと思っています。 – asuciu