C# WPF从单独的视图绑定到ViewModel
我正在尝试为按钮创建ViewModel和ControlTemplate之间的绑定,该按钮位于视图调用的单独文件中 到目前为止,没有一个标准方法有效,我不确定如何告诉ControlTemplate按钮,它可以从任何视图调用(事实上我在两个视图中使用)来使用附加到调用它的视图的ViewModel。已经找了几个小时没有找到解决办法(既没有解释,也没有可以推断的例子)。我的措辞可能不正确。我正在为MVVM使用Caliburn Micro ShellViewModel包含以下内容,这是在my ShellView/ViewModel激活视图/视图模型时设置的(调用时,Shell保持打开状态,其中存在其他Shell)C# WPF从单独的视图绑定到ViewModel,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我正在尝试为按钮创建ViewModel和ControlTemplate之间的绑定,该按钮位于视图调用的单独文件中 到目前为止,没有一个标准方法有效,我不确定如何告诉ControlTemplate按钮,它可以从任何视图调用(事实上我在两个视图中使用)来使用附加到调用它的视图的ViewModel。已经找了几个小时没有找到解决办法(既没有解释,也没有可以推断的例子)。我的措辞可能不正确。我正在为MVVM使用Caliburn Micro ShellViewModel包含以下内容,这是在my ShellV
public void LoadBuy()
{
按钮kgdbuy=“蓝色”;
ActivateItem(BuyViewModel);
}
私有字符串_buttonkgdbuy=“绿色”;
公共字符串按钮KGDBUY
{
获取{return_buttonBkgdBuy;}
设置
{
_buttonBkgdBuy=值;
属性更改通知(()=>按钮kgdbuy);
}
}
在ShellView中单击“我的按钮”将更新按钮KGDBUY并激活我的BuyViewModel。
按钮本身不会更改其颜色,也不会将正确的原始颜色设置为cs中的默认颜色。以下是ShellView中的按钮:
模板位于单独的文件中,并在App.xaml中介绍:
#700000
#7c4599
最后,提供按钮文件的完整版本,以避免遗漏某些内容。这句话我在前后都加了评论
谢谢你的帮助。我从未尝试过这样的绑定,虽然我认为可能,但我不确定这将被称为什么。如果我知道要搜索什么,我很乐意阅读它。直接绑定到
按钮kgdbu
应该可以工作,前提是模板当前应用到的按钮具有一个带有公共按钮kgdbuy
属性的DataContext
,该属性返回颜色
:
<GradientStop Color="{Binding ButtonBkgdBuy}" Offset="1" />
然后,可以在每个按钮
实例的模板中设置绑定到的属性:
<StackPanel>
<Button Template="{DynamicResource BlackButton}"
Tag="Green"
x:Name="LoadBuy" Width="238" Margin="15,0,0,0" FontSize="24" Height="40" Content="Browse Our Selection"/>
</StackPanel>
您可能需要一个具有依赖属性的按钮类。我有几个步骤说明了如何进行绑定,如使用按钮、文本框等。希望这些将有助于进一步澄清绑定。@DRapp谢谢,这些信息有助于我更深入地理解绑定的不同方法。在阅读了您和MM8的回复后,我得出了解决方案。我感谢您的帮助和信息。谢谢,当您提到应用于按钮的DataContext时,这帮助我找到了确切的解决方案。虽然我无法使Tag属性在这个设置中工作,但我将研究其他不太复杂的用途。如果你想把它添加到你的答案中,我不太明白为什么它有效,但另一个没有。仍在努力更深入地理解这一点。
<StackPanel>
<Button Template="{DynamicResource BlackButton}"
Tag="Green"
x:Name="LoadBuy" Width="238" Margin="15,0,0,0" FontSize="24" Height="40" Content="Browse Our Selection"/>
</StackPanel>