【发布时间】:2014-06-20 07:54:20
【问题描述】:
所以我得到了这个使用 Caliburn 微框架创建的 windows phone 项目。我的目标是以编程方式替换网格行中的内容。或者只是在我的网格顶部添加一个新行,所以我有 3 行而不是 2 行。网格在 .xaml 中看起来像这样:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Path=LocalizedResources.NGA, Source={StaticResource LocalizedStrings}}" Visibility="{Binding Path=ShowNoGolferMessage,Mode=TwoWay}"></TextBlock>
<ListBox Grid.Row="1" x:Name="lstSearch" ItemsSource="{Binding GolferList, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
//Long list of ListBox items.
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
所以我的想法是使用 x:Name 将网格绑定到一个变量:
<Grid x:Name="golfereGrid">
但我无法让它发挥作用。然后我尝试为 Grids DataContext 设置绑定:
<Grid DataContext="{Binding golfereGrid, Mode=TwoWay}">
在这两种情况下都不起作用,我的 golfereGrid 结果为空。我的 golfereGrid 看起来像这样:
private Grid _golfereGrid;
public Grid golfereGrid
{
get { return _golfereGrid; }
set
{
_golfereGrid = value;
NotifyOfPropertyChange(() => golfereGrid);
}
}
我已经为此苦苦挣扎了一段时间,希望能得到一些帮助
【问题讨论】:
-
好的,我找到了一个半解决方案。在网格中创建 3 行,然后绑定第 0 行和第 1 行的高度,然后当您希望第 1 行位于顶部时,您只需将第 0 行高度更改为 0,将第 1 行更改为等 150。当您需要第 0 行时,您给出 150在高度和第 1 行 0 高度。谁有更好的解决方案?
标签: c# xaml windows-phone-8 caliburn.micro