1

こんにちは、ここで何か助けが見つかることを願っています...

プリズムとMVVMを使用してWPFアプリケーションを作成しています。

ここで見つけた添付プロパティを作成しようとしています。

私のViewModelでは、フォーカスされた要素を取得します

var control = Keyboard.FocusedElement;

それから私はします

string value = ExtraTextBehaviourObject.GetExtraText(control as UIElement);

しかし、返される値は常にnullです...誰かが私を正しい方向に向けることができますか???

アップデート

public class ExtraTextBehaviourObject : DependencyObject
    {
        //Declare the dependency property
        public static readonly DependencyProperty ExtraTextProperty;

        static ExtraTextBehaviourObject()
        {
            //register it as attached property
            ExtraTextProperty = DependencyProperty.RegisterAttached("ExtraText", typeof(string),
                                                                    typeof(ExtraTextBehaviourObject));
        }

        //static function for setting the text
        public static void SetExtraText(UIElement uiElement, string value)
        {
            if (uiElement != null)
            {
                uiElement.SetValue(ExtraTextProperty, value);
            }
        }

        //static function for getting the text
        public static string GetExtraText(UIElement uiElement)
        {
            if (uiElement != null)
            {
                return (string)uiElement.GetValue(ExtraTextProperty);
            }
            return "";
        }
    }

XAML でコードを設定する

<dxe:TextEdit Text="{Binding Path=Customer.Comments, Mode=TwoWay}" AcceptsReturn="True" VerticalContentAlignment="Top"
                                  HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Behaviors:ExtraTextBehaviourObject.ExtraText="HelloExtraText"
                                  ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
4

2 に答える 2

0

問題は、Keyboard.FocusedElement を使用したときに正しいコントロールを取得できなかったことです。私が彼らのコントロールを使用しているので、これはdevexpressのことかもしれません。そのため、そのコントロールが私の問題を解決するまで要素ツリーを上にたどりました...クレメンスに感謝します!

于 2013-06-05T14:16:56.967 に答える