我同时使用WinForm
和WPF
。我试图找出如何在按钮单击时WPF textbox control
在我的WinForm
应用程序中更新文本。使用WinForm
文本框,我可以轻松完成操作MyTextBox.Text = counter
,但是使用WPF,我无法做到。为什么,以及如何做到这一点?
例如,如果我单击该按钮,我的WPF文本框应计数为1,2,3,4,5 ...但不是。
WinForm代码
int counter = 0;
private void counter_btn_Click(object sender, EventArgs e)
{
counter++;
CountTxtBx.Text = counter.ToString();
CountTxtBx.Update();
Console.WriteLine(counter);
}
WPF用户文本框用户控件
<UserControl x:Class="textbox_Update.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:textbox_Update"
mc:Ignorable="d"
d:DesignHeight="50
" d:DesignWidth="239">
<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="50" TextWrapping="Wrap" Text="{Binding ElementName=textBox1, Path=Text}" VerticalAlignment="Top" Width="239" FontSize="20" Padding="0,7,0,0"/>
</Grid>
我在WinForms中的WPF用户控件设置
将文本框绑定到用户控件中,如下所示:
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="50" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=CounterValue}" VerticalAlignment="Top" Width="239" FontSize="20" Padding="0,7,0,0"/>
在usercontrol后面的代码中,您添加了一个依赖项属性:
public int CounterValue
{
get { return (int)GetValue(CounterValueProperty); }
set { SetValue(CounterValueProperty, value); }
}
// Using a DependencyProperty as the backing store for CounterValue. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CounterValueProperty =
DependencyProperty.Register("CounterValue", typeof(int), typeof(UserControl1), new PropertyMetadata(0));
}
在WinForm Button.Click事件中,您可以像这样进行更新:
private void button1_Click(object sender, EventArgs e)
{
(CountTxBx.Child as UserControl1).CounterValue++;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句