在我的App.xaml中,我有两个资源
<x:Double x:Key="MasterGridSize">150</x:Double>
<DataTemplate x:Key="MasterGridItemTemplate">
<Grid Width="{StaticResource MasterGridSize}" Height="{StaticResource MasterGridSize}">
</Grid>
</DataTemplate>
当我更改MasterGridSize
的值时,它不会像预期的那样更改网格大小。我怎样才能做到这一点?
我尝试了ThemeResource
,当主题发生变化时,它至少会改变。
DynamicResource
不可用。
我不想将MasterGridSize添加到ViewModel,因为这会导致ViewModel和某些更新代码之间存在某些依赖关系。
还有其他想法吗?
编辑:直接编辑DataTemplate也是合理的 - 我将如何实现这一目标?
答案 0 :(得分:2)
您需要使用值持有者,例如BindableValueHolder中的UWP Community Toolkit。
<helpers:BindableValueHolder x:Key="MasterGridSize">
<helpers:BindableValueHolder.Value>
<x:Double>150</x:Double>
</helpers:BindableValueHolder.Value>
</helpers:BindableValueHolder>
<DataTemplate x:Key="MasterGridItemTemplate">
<Grid Width="{Binding Value, Source={StaticResource MasterGridSize}}" Height="{Binding Value, Source={StaticResource MasterGridSize}}" />
</DataTemplate>
可用的源代码here!
答案 1 :(得分:0)
您是否已宣布您的资源非常好?如果是,请按以下方式尝试GridLength:
<Page.Resources>
<GridLength x:Key="FirstSize">5*</GridLength>
<GridLength x:Key="SecondSize">4*</GridLength>
</Page.Resources>
<DataTemplate x:Key="MasterGridItemTemplate">
<Grid Width="{StaticResource FirstSize}" Height="{StaticResource SecondSize}">
</Grid>
</DataTemplate>