gpt4 book ai didi

c# - 使用 C# 在 VisualBrush 中设置图像运行时

转载 作者:行者123 更新时间:2023-11-30 22:20:43 26 4
gpt4 key购买 nike

实际上,我在设计时将一张从资源中获取的图像设置到 xaml 文件中,如下所示:

<Button Click="btnLogin_Click" Name="btnLogin">
<StackPanel Orientation="Horizontal">
<Rectangle Width="20" Height="20" Name="recLogin">
<Rectangle.Resources>
<SolidColorBrush x:Key="BlackBrush" Color="White" />
</Rectangle.Resources>
<Rectangle.Fill>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_user}" x:Name="brushLogin" />
</Rectangle.Fill>
</Rectangle>
<TextBlock Text=" login" Name="txbLogin" />
</StackPanel>
</Button>

并且工作正常。但是(是一个登录按钮)我希望当用户登录时,按钮上的图像(在矩形内)将被更改..

我该怎么办?

最佳答案

您可以使用 DataTrigger 在模型中更新属性时更改图像。

在此示例中, bool 值 IsLoggedIn 发生了变化,这反过来又改变了图像。

例子:

Xaml:

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="125.078" Width="236.441" Name="UI" >
<Window.Resources>

<VisualBrush x:Key="Loggedin">
<VisualBrush.Visual>
<Image Source="http://icons.iconarchive.com/icons/deleket/sleek-xp-basic/32/Ok-icon.png" Stretch="Uniform" />
</VisualBrush.Visual>
</VisualBrush>

<VisualBrush x:Key="NotLoggedin">
<VisualBrush.Visual>
<Image Source="http://icons.iconarchive.com/icons/deleket/sleek-xp-basic/32/Close-2-icon.png" Stretch="Uniform" />
</VisualBrush.Visual>
</VisualBrush>

</Window.Resources>

<Grid DataContext="{Binding ElementName=UI}">
<Button Click="btnLogin_Click" Name="btnLogin" HorizontalAlignment="Left" Width="94" Height="40" VerticalAlignment="Top" Margin="63,26,0,0">
<StackPanel Orientation="Horizontal">
<Rectangle Width="20" Height="20" Name="recLogin">
<Rectangle.Resources>
<SolidColorBrush x:Key="BlackBrush" Color="White" />
</Rectangle.Resources>
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="{StaticResource NotLoggedin}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsLoggedIn}" Value="True">
<Setter Property="Fill" Value="{StaticResource Loggedin}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
<TextBlock Text=" login" Name="txbLogin" />
</StackPanel>
</Button>
</Grid>
</Window>

代码:

public partial class MainWindow : Window, INotifyPropertyChanged
{
private bool _isLoggedIn;

public MainWindow()
{
InitializeComponent();
}

public bool IsLoggedIn
{
get { return _isLoggedIn; }
set { _isLoggedIn = value; NotifyPropertyChanged("IsLoggedIn"); }
}

private void btnLogin_Click(object sender, RoutedEventArgs e)
{
IsLoggedIn = !IsLoggedIn;
}

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}

注意:我没有你的资源,所以我只使用了在线图片,你可以根据自己的需要进行更改

结果:

IsLoggedIn = false; enter image description hereIsLoggedIn = 真; enter image description here

关于c# - 使用 C# 在 VisualBrush 中设置图像运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819872/

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