Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF从单独的视图绑定到ViewModel_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# WPF从单独的视图绑定到ViewModel

C# WPF从单独的视图绑定到ViewModel,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我正在尝试为按钮创建ViewModel和ControlTemplate之间的绑定,该按钮位于视图调用的单独文件中 到目前为止,没有一个标准方法有效,我不确定如何告诉ControlTemplate按钮,它可以从任何视图调用(事实上我在两个视图中使用)来使用附加到调用它的视图的ViewModel。已经找了几个小时没有找到解决办法(既没有解释,也没有可以推断的例子)。我的措辞可能不正确。我正在为MVVM使用Caliburn Micro ShellViewModel包含以下内容,这是在my ShellV

我正在尝试为按钮创建ViewModel和ControlTemplate之间的绑定,该按钮位于视图调用的单独文件中

到目前为止,没有一个标准方法有效,我不确定如何告诉ControlTemplate按钮,它可以从任何视图调用(事实上我在两个视图中使用)来使用附加到调用它的视图的ViewModel。已经找了几个小时没有找到解决办法(既没有解释,也没有可以推断的例子)。我的措辞可能不正确。我正在为MVVM使用Caliburn Micro

ShellViewModel包含以下内容,这是在my ShellView/ViewModel激活视图/视图模型时设置的(调用时,Shell保持打开状态,其中存在其他Shell)

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>