Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Caliburn.Micro选择文本框中的所有文本?_C#_Wpf_Caliburn.micro - Fatal编程技术网

C# 如何使用Caliburn.Micro选择文本框中的所有文本?

C# 如何使用Caliburn.Micro选择文本框中的所有文本?,c#,wpf,caliburn.micro,C#,Wpf,Caliburn.micro,在我的WPF应用程序中,我使用Caliburn.Micro在View和ViewModel之间绑定 在我看来,我有一个带有文本框的StackPanel <StackPanel> <TextBox x:Name="Ctx_A" /> <TextBox x:Name="Ctx_B" /> <TextBox x:Name="Ctx_C" /> <TextBox x:Name="Ctx_D" /> </Sta

在我的WPF应用程序中,我使用Caliburn.Micro在View和ViewModel之间绑定

在我看来,我有一个带有文本框的StackPanel

<StackPanel>
    <TextBox x:Name="Ctx_A" />
    <TextBox x:Name="Ctx_B" />
    <TextBox x:Name="Ctx_C" />
    <TextBox x:Name="Ctx_D" />
</StackPanel>
接下来,我回到我的观点,写下如下内容:

<StackPanel>
    <TextBox x:Name="Ctx_A" cal:Message.Attach=" [Event GotFocus]=[Action TextBoxGotFocus($source)]"/>
    <TextBox x:Name="Ctx_B" cal:Message.Attach=" [Event GotFocus]=[Action TextBoxGotFocus($source)]"/>
    <TextBox x:Name="Ctx_C" cal:Message.Attach=" [Event GotFocus]=[Action TextBoxGotFocus($source)]"/>
    <TextBox x:Name="Ctx_D" cal:Message.Attach=" [Event GotFocus]=[Action TextBoxGotFocus($source)]"/>
</StackPanel>


有没有可能将此方法附加到StackPanel而不是TextBox?

我会从视图模型中删除
TextBoxGotFocus()
方法,因为它会模糊视图和视图模型之间的界限。视图模型中不应使用任何WPF控件。相反,我能想到的最简单的方法是创建一个继承自
TextBox
的类,然后将一个事件附加到该类:

public class AutofocusTextBox : TextBox
{
    public AutofocusTextBox()
    {
        GotFocus += (sender, e) => SelectAll();
    }
}
然后在XAML中,您可以这样使用它:

<local:AutofocusTextBox ... />


这将使您的XAML更加干净

我将从视图模型中删除
TextBoxGotFocus()
方法,因为它模糊了视图和视图模型之间的界限。视图模型中不应使用任何WPF控件。相反,我能想到的最简单的方法是创建一个继承自
TextBox
的类,然后将一个事件附加到该类:

public class AutofocusTextBox : TextBox
{
    public AutofocusTextBox()
    {
        GotFocus += (sender, e) => SelectAll();
    }
}
然后在XAML中,您可以这样使用它:

<local:AutofocusTextBox ... />


这将使您的XAML更加干净

我将从视图模型中删除
TextBoxGotFocus()
方法,因为它模糊了视图和视图模型之间的界限。视图模型中不应使用任何WPF控件。相反,我能想到的最简单的方法是创建一个继承自
TextBox
的类,然后将一个事件附加到该类:

public class AutofocusTextBox : TextBox
{
    public AutofocusTextBox()
    {
        GotFocus += (sender, e) => SelectAll();
    }
}
然后在XAML中,您可以这样使用它:

<local:AutofocusTextBox ... />


这将使您的XAML更加干净

我将从视图模型中删除
TextBoxGotFocus()
方法,因为它模糊了视图和视图模型之间的界限。视图模型中不应使用任何WPF控件。相反,我能想到的最简单的方法是创建一个继承自
TextBox
的类,然后将一个事件附加到该类:

public class AutofocusTextBox : TextBox
{
    public AutofocusTextBox()
    {
        GotFocus += (sender, e) => SelectAll();
    }
}
然后在XAML中,您可以这样使用它:

<local:AutofocusTextBox ... />


这将使您的XAML更干净

所有功劳都归WPF博士所有

在abcView.xaml中

<TextBox    Text="{Binding Amount}" 
            MinWidth="100" 
            cal:Message.Attach="[Event GotFocus] = [Action GotFocusMethod($source)];
            [Event PreviewMouseLeftButtonDown] = [Action SelectivelyIgnoreMouseButton($source, $eventArgs)]" />

所有的功劳都归于WPF博士

在abcView.xaml中

<TextBox    Text="{Binding Amount}" 
            MinWidth="100" 
            cal:Message.Attach="[Event GotFocus] = [Action GotFocusMethod($source)];
            [Event PreviewMouseLeftButtonDown] = [Action SelectivelyIgnoreMouseButton($source, $eventArgs)]" />

所有的功劳都归于WPF博士

在abcView.xaml中

<TextBox    Text="{Binding Amount}" 
            MinWidth="100" 
            cal:Message.Attach="[Event GotFocus] = [Action GotFocusMethod($source)];
            [Event PreviewMouseLeftButtonDown] = [Action SelectivelyIgnoreMouseButton($source, $eventArgs)]" />

所有的功劳都归于WPF博士

在abcView.xaml中

<TextBox    Text="{Binding Amount}" 
            MinWidth="100" 
            cal:Message.Attach="[Event GotFocus] = [Action GotFocusMethod($source)];
            [Event PreviewMouseLeftButtonDown] = [Action SelectivelyIgnoreMouseButton($source, $eventArgs)]" />