我有 2 个独立的用户控件(不是父子关系),如下所示:
问题陈述:如何将 UserControl2 中计算的(即时)聚合值传递给 UserControl1。两者都利用相同的 ViewModel(两者的 DataContext 都设置为 CommonViewModel)
更多技术细节:
- 聚合值全部在 XAML 中计算(使用第 3 方控件的聚合函数 - 在本例中为 Telerik)
- 我了解我应该/将在我的 ViewModel 上拥有公共属性,这些属性将保存这些值(在加载/计算时从 UC2 设置)
- 聚合值不显示在 UC2 中,因此不能使用简单的 2 方式绑定模式(在 ViewModel 上设置公共属性)
- 这不是与 Telerik 相关的特定问题
具体问题:
- 如何在 ViewModel 中为 UC2 中未显示的值设置值?
- 这种整体方法是否正确 - 其中我使用 ViewModel 上的公共属性作为存储机制来传播 2 个用户控件中的值。我没有任何特定要求在任何时间点将这些值存储到持久存储(例如 DB)。
编辑 - 这是代码片段 -
<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>
今天在同一个用户控件(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 中设置一个值,但试图避免这种方法。
非常感谢对方法和特定代码片段的任何见解。
谢谢