gpt4 book ai didi

c# - 如何从代码隐藏刷新自定义 wpf 用户控件?

转载 作者:行者123 更新时间:2023-12-02 01:22:33 24 4
gpt4 key购买 nike

我有这个自定义 wpf 用户控件:

ShowCustomer.xaml:

<UserControl x:Class="TestControlUpdate2343.Controls.ShowCustomer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBlock Text="{Binding Message}"/>
</Grid>
</UserControl>

ShowCustomer.xaml.cs:

using System.Windows.Controls;
using System;
using System.ComponentModel;

namespace TestControlUpdate2343.Controls
{
public partial class ShowCustomer : UserControl, INotifyPropertyChanged
{
#region ViewModelProperty: Message
private string _message;
public string Message
{
get
{
return _message;
}

set
{
_message = value;
OnPropertyChanged("Message");
}
}
#endregion

public ShowCustomer()
{
InitializeComponent();
DataContext = this;

Message = "showing test customer at: " + DateTime.Now.ToString();
}

#region INotifiedProperty Block
public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;

if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}

我通过这个 XAML 显示它:

Window1.xaml:

<Window x:Class="TestControlUpdate2343.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:TestControlUpdate2343.Controls"
Title="Window1" Height="300" Width="300">
<StackPanel HorizontalAlignment="Left" Margin="10">
<controls:ShowCustomer x:Name="ShowCustomerControl" Margin="0 0 0 10"/>
<Button Content="Refresh Control"
Click="Button_RefreshControls_Click"
Margin="0 0 0 10"/>
</StackPanel>
</Window>

我想从后面的代码中的事件处理程序更新控件(即在本示例中显示当前时间):

using System.Windows;

namespace TestControlUpdate2343
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

private void Button_RefreshControls_Click(object sender, RoutedEventArgs e)
{
//ShowCustomerControl.Refresh()???
}
}
}

如何从代码后面强制刷新自定义控件,或者强制它以某种方式重新加载,以便当我单击按钮时它会显示当前时间?

最佳答案

在 Window1.xaml.cs 中 -

private void Button_RefreshControls_Click(object sender, RoutedEventArgs e)
{
ShowCustomerControl.Refresh();
}

在 ShowCustomer.xaml.cs 中 -

    public ShowCustomer()
{
InitializeComponent();
DataContext = this;

Refresh();
}

public void Refresh()
{
Message = "showing test customer at: " + DateTime.Now.ToString();
}

希望这有帮助!!

关于c# - 如何从代码隐藏刷新自定义 wpf 用户控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1901281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com