我正在尝试将Command绑定添加到资源字典中的按钮。我为整个应用程序设计了全局样式,我想要的只是添加带有命令的按钮,该按钮可在屏幕上打开所有文本框的键盘。 我的代码如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<Style TargetType="{x:Type TextBox}">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="0">
<StackPanel Orientation="Horizontal">
<ScrollViewer Width="150" />
<Popup x:Name="icon" IsOpen="False" HorizontalAlignment="Right">
<Button BorderThickness="1" Visibility="Visible" Command="{*..and now I want to bind my command...*}">
</Button>
</Popup>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="IsOpen" TargetName="icon" Value="True" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
任何人都可以帮助解决问题吗?
答案 0 :(得分:0)
您想要做的是创建一个用户控件,其中包含一个文本框,该框带有一个针对osk.exe开始的“ GotFocus”事件的事件处理程序,以及一个终止osk.exe的事件处理程序“ Lostfocus”,如下所示:
<UserControl [...] >
<Grid Background="White">
<TextBlock GotFocus="ShowKeyboard" LostFocus="HideKeyboard"/>
</Grid>
</UserControl>
private void ShowKeyboard(object sender, RoutedEventArgs e)
{
//run osk.exe
}
private void HideKeyboard(object sender, RoutedEventArgs e)
{
//terminate osk.exe
}
答案 1 :(得分:0)
您可以使用PlacementTarget绑定按钮
<Button BorderThickness="1" Visibility="Visible" Command="{*..and now I want to bind my command...*}" DataContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}"/>
然后在代码中需要指定标签,它正在寻找窗口,但是您可以更改anecestorType。
<TextBox Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
当然,在您的ViewModel(DataContext)中,您需要指定正确的命令。