【问题标题】:xaml windows phone 8.1 binding to page from templatexaml windows phone 8.1从模板绑定到页面
【发布时间】:2014-10-30 03:25:12
【问题描述】:

我正在尝试将 DataTemplate(在列表框中使用)中的复选框的可见性绑定到我的 ViewModel 上的属性。我想用一个属性显示和隐藏所有复选框。

经过我所有的搜索,我找不到解决方案。这是我到目前为止的非工作代码。

<DataTemplate x:Key="GroupTemplate">
    <Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="40"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <CheckBox  Visibility="{Binding CheckboxVisible, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BooleanToVisibilityConverter}}"  Grid.Column="0" />
        <TextBlock  Text="{Binding GroupName}" Grid.Column="1"/>
    </Grid>
</DataTemplate>

public class GroupListViewModel : ViewModelBase
{
    private bool _checkboxVisible;
    public bool CheckboxVisible
    {
        get
        {
            return _checkboxVisible;
        }
        set
        {
            Set(() => CheckboxVisible, ref _checkboxVisible, value);
        }
    }               
    // ...
}   

【问题讨论】:

    标签: c# xaml data-binding datatemplate windows-phone-8.1


    【解决方案1】:

    GroupListViewModel 是具有此数据模板的项控件的 DataContext 吗?然后可以给items控件加个名字,通过名字来访问,例如:

    <GridView x:Name="items">
    ...
    <CheckBox  Visibility="{Binding DataContext.CheckboxVisible, ElementName=items, Converter={StaticResource BooleanToVisibilityConverter}}"  Grid.Column="0" /
    

    【讨论】:

    • GroupListViewModel 是页面的 DataContext。
    • 那么我的解决方案应该可以工作,因为项目控件将从页面派生它的 DataContext。或者您可以为页面控件命名并改为访问它
    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多