嘿,我是WPF的新手,所以这是我的问题:
当textBlock位于名为curTemp.xaml的窗口中时,如何从mainWindow更改TextBlock中的文本?
curTemp.xaml代码:
public partial class curTemp : UserControl
{
public string _valTempChange
{
get { return middleForcastCurrentTemp.Text; }
set { middleForcastCurrentTemp.Text = value; }
}
public curTemp()
{
InitializeComponent();
}
}
上述UserControl的Xaml:
<Grid>
<TextBlock TextWrapping="Wrap" Padding="5" Foreground="White" Panel.ZIndex="7" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="15,-110,-43,0" Width="198" Height="122">
<TextBlock.Effect>
<DropShadowEffect BlurRadius="4" Direction="0" ShadowDepth="0" />
</TextBlock.Effect>
<outlineText:OutlinedTextBlock Height="146" Width="192" TextOptions.TextRenderingMode="Aliased" FontFamily="Segoe UI" FontSize="100" x:FieldModifier="public" x:Name="middleForcastCurrentTemp"
FontWeight="Medium" TextWrapping="Wrap" TextAlignment="Right" Stroke="Black" StrokeThickness="3" Fill="White" Text="10"/>
</TextBlock>
</Grid>
在我的MainWindow代码中:
public MainWindow()
{
InitializeComponent();
curTemp _curTempWindow = new curTemp();
_curTempWindow._valTempChange = "55";
}
当我运行该代码时,它永远不会在textBlock中显示“55”。它只显示我的默认文本“10”。
我在这里做错了什么?
答案 0 :(得分:0)
您正在curTemp
的构造函数中创建MainWindow
的新实例,但您无法显示它。
是否可以在curTemp
的XAML代码中创建MainWindow
个实例?然后,您不会修改此显示的curTemp
实例的文本,但是新创建的(第二个)但未显示的curTemp
实例的文本称为_curTempWindow
答案 1 :(得分:0)
您需要访问用户控件的当前对象。 目前您正在创建一个新对象。 我不确定您是如何使用用户控件以及您使用的模式。
您可以在用户控件中创建单例实例并访问 主窗口中的用户控件实例。
答案 2 :(得分:0)
curTemp
不是一个窗口。这是一个UserControl
。您在哪里创建实际在屏幕上看到的UserControl
实例?可能在您的XAML标记中,即在MainWindow.xaml
。
然后,您可以在XAML中为元素提供x:Name
:
<local:curTemp x:Name="uc" />
...并使用其名称设置此实例的_valTempChange
属性:
public MainWindow()
{
InitializeComponent();
uc._curTempWindow._valTempChange = "55";
}