C# 从另一个UserControl绑定值(两者都利用相同的ViewModel)
我有两个独立的用户控件(不是父子关系),如下所示: 问题陈述:如何将UserControl2中计算的聚合值(动态)传递给UserControl1。两者都利用相同的ViewModel(两者的DataContext都设置为CommonViewModel) 更多技术细节:C# 从另一个UserControl绑定值(两者都利用相同的ViewModel),c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我有两个独立的用户控件(不是父子关系),如下所示: 问题陈述:如何将UserControl2中计算的聚合值(动态)传递给UserControl1。两者都利用相同的ViewModel(两者的DataContext都设置为CommonViewModel) 更多技术细节: 聚合值均以XAML计算(使用第三方控件的聚合函数-在本例中为Telerik) 我知道我的ViewModel上应该/将会有公共属性,这些属性将保存这些值(在加载/计算时从UC2设置) 聚合值不显示在UC2中,因此无法使用简单的双向
- 聚合值均以XAML计算(使用第三方控件的聚合函数-在本例中为Telerik)
- 我知道我的ViewModel上应该/将会有公共属性,这些属性将保存这些值(在加载/计算时从UC2设置)
- 聚合值不显示在UC2中,因此无法使用简单的双向绑定模式(用于设置ViewModel上的公共属性)
- 这不是一个与telerik相关的具体问题
<telerik:RadGridView
Name="ABC"
ItemsSource="{Binding appstats}"
AutoGenerateColumns="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding Name}"
Header="Name"
TextAlignment="Justify"
IsFilterable="False">
<!-- Telerik Count Function to get total number of Names -->
<telerik:GridViewDataColumn.AggregateFunctions>
<telerik:CountFunction FunctionName="AppCount" />
</telerik:GridViewDataColumn.AggregateFunctions>
<!--End Region -->
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
在今天相同的usercontrol(UC2.xaml)中,我执行以下操作:
<StackPanel Orientation="Horizontal" Margin="10" Grid.Row="0">
<TextBlock Text="Total number of Names:" />
<TextBlock Text="{Binding AggregateResults[\AppCount\].FormattedValue, ElementName=ABC}" />
</StackPanel>
代码的第二部分是我想转移到UC1的内容。正如下面所建议的(我已经尝试过了)——我可以在这里隐藏这个元素,并让它在VM中设置一个值,但我试图避免这种方法
非常感谢对方法和特定代码片段的任何见解
谢谢
聚合值都是用XAML计算的
——这就是问题所在。如果您需要将数据视为数据
并在整个应用程序中共享/访问,则不要将其放在UI级别。正确-但一旦我在XAML中获得一个值-我就不能在我的ViewModel中将其设置为公共属性(从视图到ViewModel的propofate值)。这应该是可能的,对吧?可能是使用自定义DP??我不熟悉Telerik,所以我说不出来,但是是的,您应该能够(使用代码隐藏只是为了将值发送回VM)正确-不希望解决方案特定于Telerik。但是你能告诉我一些文章,其中XAML值(未在UI中显示)被设置回VM中的公共属性。一种方法是在UI中折叠控件,但仍然具有双向绑定-计算(如果不依赖于渲染大小)仍然会发生。如果这不是一个选项,那么保存计算值的控件和(控件的)属性是什么?