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

2023-12-10

实际上我将设计时从资源中获取的图像设置为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当模型中的属性更新时更改图像。

在此示例中,布尔值IsLoggedIn发生改变,进而改变图像。

Example:

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>

Code:

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));
        }
    }
 }

Note:我只是使用在线图片,因为我没有你的资源,你可以根据你的需要进行更改

Result:

IsLoggedIn = false; enter image description here IsLoggedIn = true; enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 在 VisualBrush 中设置图像运行时 的相关文章

随机推荐

  • 使用 Django 的 ORM 的模型继承方法

    我想将事件存储在我正在闲逛的 Web 应用程序中 并且我非常不确定每种方法的优缺点 广泛使用继承或以更温和的方式使用继承 Example class Event models Model moment models DateTimeFiel
  • 如何安装肥皂扩展?

    如何安装肥皂 我收到这个错误 致命错误 在第 16 行 home user mysite com path to file php 中找不到类 SoapClient 我在 DreamHost 中托管我的网站 他们不支持任何第三方安装 UPD
  • 如何连接 Web API Castle Windsor DI 代码的各个部分?

    如何连接 Web API Castle Windsor DI 代码的各个部分 以便控制器的路由选择正确的接口实现 Note 经过几次错误的开始 死胡同和部分胜利 here and here and here 我将尽快给予最大的赏金500点
  • 设置从包含注释的 json 加载的对象的属性值

    当从 json 文件加载对象时 通常可以设置属性值并将文件写回 如下所示 manifest gc manifestPath ConvertFrom Json AsHashtable manifest name manifest name s
  • 在 DatePIcker 中设置 MinDate 和 MaxDate

    创建应用程序 其中我显示 DatePicker 现在我想设置 DatePicker 的 MinDate 是前两年 最大日期仅是未来两年 选择应基于当前日期 假设当前日期是 23 11 2016 因此 datepicker 应显示日期直到 2
  • iPhone 无法通过 WiFi 连接到本地 HTTP 服务器

    使用以下命令时 我无法打开在 iPhone 6s iOS 9 2 中的 MacBook 上运行的 HTTP 服务器提供的静态 HTML 页面 无论是在 Safari 还是 Chrome 浏览器中 http ipNumberOfMyServe
  • PHP 禁用输出缓冲

    我已经关掉了输出缓冲在 PHP 中通过设置output buffering off在 php int 中 但是当运行这样的简单代码时
  • 二维数组传递给函数

    我一直在读这个question但我无法获得解决问题的结果代码 我应该如何改变它才能使其发挥作用 void print2 int array int n int m main int array 4 1 2 3 4 5 6 7 8 int a
  • 使用通用参数执行远程通用 Powershell 脚本

    我需要编写一个 Powershell 脚本 我们称之为 控制器脚本 它能够调用传递通用参数的通用远程 Powershell 脚本 控制器脚本接受主机名 凭据 远程脚本路径和远程脚本参数 作为哈希表 作为参数 相反 远程脚本可以是接受任何字符
  • 有没有办法找出哪些STL头文件没有被直接包含?

    我们的产品使用C 作为编程语言 使用 C STL 的一个恼人的问题是我们忘记包含必要的头文件 因为该文件可能已包含在其他一些 STL 头文件中 构建会通过 例如 在使用Xcode的Mac平台上 如果我使用std auto ptr不包括mem
  • 如何实现自旋锁以避免阻塞

    考虑以下代码 Below block executed by thread t1 synchronized obj obj wait 0 This block executed by thread t2 synchronized obj o
  • FbChatBot 将消息标记为已读

    我正在开发 Facebook 聊天机器人 我想将消息标记为已读 这样当我们的 Facebook 页面的版主查看消息部分时 他们就不会看到那么多未读消息 即使 Facebook 聊天机器人已经回复了该用户他们不需要单击该消息只是将其标记为 已
  • 以编程方式禁用屏幕超时

    从这篇文章来看 Android 在应用程序运行时禁用屏幕超时 我可以通过禁用屏幕超时 getWindow addFlags WindowManager LayoutParams FLAG FULLSCREEN WindowManager L
  • 如何形成 dbPedia iSPARQL 查询(针对维基百科内容)

    假设我需要从维基百科获取有关所有山脉的内容 我的目标是显示初始段落和相应文章中的图像 例如罗莎山 and 文森特金字塔 我开始了解 dbpedia 并通过一些研究发现它直接提供对 wiki 数据库的实时查询 我有两个问题 1 我发现很难如何
  • memcpy 错误:分段错误(核心转储)

    我正在尝试使用 memcpy 和以下代码将一个字符串复制到 c 中的另一个字符串 include
  • 是否可以使用非特殊文件夹作为FolderBrowserDialog的根文件夹?

    FolderBrowserDialog RootFolder 属性仅限于中定义的特殊文件夹环境 特殊文件夹枚举器 然而 在我的应用程序中 我们需要显示此对话框 但根路径需要可配置 并且通常是自定义文件夹 与枚举器中的任何特殊文件夹无关 如何
  • 我可以将 NUnit 3 测试添加到 Visual Studio 2015 负载测试中吗?

    我有一个用 C 编写的测试自动化框架 其中单元测试用NUnit 不是MS测试 我创建了一个新的Visual Studio 负载测试配置 我希望能够将这些 NUnit 测试添加到负载测试中 但是 Visual Studio 2015 没有列出
  • PHP不会输出新行[重复]

    这个问题在这里已经有答案了 我已经尝试了在 PHP 中输 出换行符的所有方法 为什么以下不起作用 这应该在 hello 和 bar 之间输出换行符 但事实并非如此 我也尝试过 r n 而不是 n 如果您将其用作命令行脚本 那么这将起作用 我
  • 由 mysql 数据库填充的 UIscroll 单元格中的图像

    我被困在某处 我使用 PHP 动态地从 MYSQL 数据库中提取图像 直到我达到从 URL 检索照片名称的程度为止 一切都正常 我想在 UIScroll View 上动态插入缩略图 以便用户可以水平滚动以查看所有图像 照片描述 照片摘要 我
  • 使用 C# 在 VisualBrush 中设置图像运行时

    实际上我将设计时从资源中获取的图像设置为xaml像这样的文件