public static class TreeViewItemBehavior
{
public static bool GetIsBroughtIntoViewWhenSelected(TreeViewItem treeViewItem)
{
return (bool)treeViewItem.GetValue(IsBroughtIntoViewWhenSelectedProperty);
}
public static void SetIsBroughtIntoViewWhenSelected(
TreeViewItem treeViewItem, bool value)
{
treeViewItem.SetValue(IsBroughtIntoViewWhenSelectedProperty, value);
}
public static readonly DependencyProperty IsBroughtIntoViewWhenSelectedProperty =
DependencyProperty.RegisterAttached(
"IsBroughtIntoViewWhenSelected",
typeof(bool),
typeof(TreeViewItemBehavior),
new UIPropertyMetadata(false, OnIsBroughtIntoViewWhenSelectedChanged));
static void OnIsBroughtIntoViewWhenSelectedChanged(
DependencyObject depObj, DependencyPropertyChangedEventArgs e)
{
TreeViewItem item = depObj as TreeViewItem;
if (item == null)
return;
if (e.NewValue is bool == false)
return;
if ((bool)e.NewValue)
item.Selected += OnTreeViewItemSelected;
else
item.Selected -= OnTreeViewItemSelected;
}
static void OnTreeViewItemSelected(object sender, RoutedEventArgs e)
{
// Only react to the Selected event raised by the TreeViewItem
// whose IsSelected property was modified. Ignore all ancestors
// who are merely reporting that a descendant's Selected fired.
if (!Object.ReferenceEquals(sender, e.OriginalSource))
return;
TreeViewItem item = e.OriginalSource as TreeViewItem;
if (item != null)
item.BringIntoView();
}
#endregion // IsBroughtIntoViewWhenSelected
}
「ゲット」の役割は何と接頭辞付きのメソッドを「設定」しますか?このクラスを追加し、XAMLでTreeView.ItemControlsStyle Setterプロパティを静的依存プロパティに設定し、その値を "True"に設定します。私はBOTH getおよびset接頭辞方法コメントアウトして再コンパイルする場合、インテリセンスは、スタイルのプロパティはNULLにすることはできませんと文句を言い、まだコンパイルはまだ成功し、
static void OnIsBroughtIntoViewWhenSelectedChanged(
DependencyObject depObj, DependencyPropertyChangedEventArgs e)
の機能がを維持しています。
いずれの方法でもメソッド名が変更されても、不平は残っていますが、1つのメソッドだけがコメントアウト/変更されていれば不平はありません。
これは、プロパティの取得と設定を実装する代替手段ですか?コントロールは自動的にXAMLの 'Get/Set + PropertyName'拡張メソッドを探しますか? get/setエクステンションが無効/コメントアウトされているときに、どのように/これが機能するのですか?クラスとxaml refは、指定されたリンクで見つけることができます。私は指定されたXAMLプロパティrefをx:Staticと宣言して修正しましたが、これが唯一の変更です。任意の洞察力をありがとう...