gpt4 book ai didi

c# - 我们可以通过 MVVM 中的 ICommand 获取按钮单击时的按钮属性(如按钮文本、按钮隐藏状态等)吗

转载 作者:行者123 更新时间:2023-12-03 10:54:31 24 4
gpt4 key购买 nike

我正在使用 ICommand(MVVM) 进行按钮单击事件,但我在这里有一点疑问。

当我将 ICommand 用于按钮单击事件时,我们可以像在按钮单击事件中那样从后面的代码中访问按钮的属性吗?

在后面的代码中,很容易通过 sender 对象我们可以得到如下所示的属性,

private void BtnClicked(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var datacontext = button.DataContext;
}

同样,我们可以在 ICommand 中执行此操作吗?

提前致谢

最佳答案

以下是如何使用 MultiBinding 的示例实现和 IMultiValueConverter :

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace SO_app.Converters
{
class MultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
foreach (var item in values)
{
//process the properties passed in
}
return new object();
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

然后在您的 xaml 中:
<Window x:Class="SO_app.TestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SO_app"
xmlns:converter="clr-namespace:SO_app.Converters"
mc:Ignorable="d"
xmlns:vm="clr-namespace:VM;assembly=VM"
Title="TestWindow" Height="300" Width="300">
<Window.DataContext>
<vm:MainViewModel/>
</Window.DataContext>
<Window.Resources>
<converter:MultiValueConverter x:Key="mvc"/>
</Window.Resources>
<Grid>
<Button Command="{Binding SomeCommand}" Content="Some value here">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource mvc}">
<Binding Path="Visibility" RelativeSource="{RelativeSource Self}"/>
<Binding Path="Content" RelativeSource="{RelativeSource Self}"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
</Grid>

以下是您将在 VS 中看到的内容:
MultiValueConverter in debug

关于c# - 我们可以通过 MVVM 中的 ICommand 获取按钮单击时的按钮属性(如按钮文本、按钮隐藏状态等)吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691863/

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