定义方法 WPF 用户控件
本文关键字:控件 用户 WPF 方法 定义 | 更新日期: 2023-09-27 18:35:29
我有这个用户控件:我将此用户控件添加到我的Winforms
应用程序(简单的 BusyIndicator)
UserControl x:Class="Stackoverflow.MyBusyIndicator"
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:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<xctk:BusyIndicator x:Name="busyIndicator" IsBusy="{Binding IsBusy}" />
</Grid>
</UserControl>
我想要的只是定义我可以从 c# 代码访问的Method
以停止此指标。
我相信你想在后面的代码中做什么?
public partial class MyBusyIndicator : UserControl
{
public void ToggleIndicator(bool isBusy)
{
// Just an example, in reality you will want to access the BusyIndicator object.
this.IsBusy = isBusy;
}
}
你的 XAML 代码很好,现在只需创建一个依赖项属性并将其称为"IsBusy",然后可以使用数据绑定在用户控件 XAML 中绑定到该属性(以直观地指示 IsBusy 属性状态),
public partial class BusyIndicator : UserControl
{
public BusyIndicator()
{
InitializeComponent();
}
public bool IsBusy
{
get { return (bool)GetValue(IsBusyProperty); }
set { SetValue(IsBusyProperty, value); }
}
public static readonly DependencyProperty IsBusyProperty =
DependencyProperty.Register("IsBusy", typeof(bool), typeof(BusyIndicator),
new PropertyMetadata(false));
}
试试这个:
<UserControl x:Class="Stackoverflow.MyBusyIndicator"
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:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<xctk:BusyIndicator x:Name="myBusyIndicator" IsBusy="True" />
</Grid>
</UserControl>
代码巴欣德 :
namespace Stackoverflow
{
using System;
using System.Windows;
using System.Windows.Controls;
public partial class MyBusyIndicator : UserControl
{
public MyBusyIndicator()
{
this.InitializeComponent();
}
public void ShowIndicator(bool isBusy)
{
this.myBusyIndicator.IsBusy = isBusy;
}
}
}
如果必须首先通过代码隐藏访问它,请先通过 Xaml 为 BusyIndicator 控件提供一个 name 属性: <xctk:BusyIndicator IsBusy="True" x:Name="busyIndicator" />
在代码隐藏中创建如下方法:
void SetIndicator(bool isBusy)
{
this.busyIndicator.IsBusy = isBusy;
}
如果您使用的是 MVVM,请绑定控件的 IsBusy属性IsBusy={Binding IsBusy}
<xctk:BusyIndicator IsBusy={Binding IsBusy} />
在您的视图模型中定义 IsBusy 属性并创建方法,如下所示:
void SetIndicator(bool isBusy)
{
IsBusy = isBusy;
}
所以下次你想设置为 True 调用 SetIndicator(true),或者如果你想把它设置为 false 调用 SetIndicator(false)。