代码之家  ›  专栏  ›  技术社区  ›  Aim Kai

更改或访问Silverlight数据表单编辑模板中的控件

  •  2
  • Aim Kai  · 技术社区  · 14 年前

    今天我在使用Silverlight数据表单控件时遇到了一个有趣的问题。我想更改绑定编辑模板中特定控件的可见性。见下面的xaml。

    <df:DataForm x:Name="NoteFormEdit" ItemsSource="{Binding Mode=OneWay}" AutoGenerateFields="True"
                    AutoEdit="True" AutoCommit="False"
                    CommitButtonContent="Save"
                    CancelButtonContent="Cancel"               
                    CommandButtonsVisibility="Commit"
                    LabelPosition="Top" ScrollViewer.VerticalScrollBarVisibility="Disabled"
                    EditEnded="NoteForm_EditEnded">
            <df:DataForm.EditTemplate>
                <DataTemplate>
                    <StackPanel>
                        <df:DataField>
                            <TextBox Text="{Binding Title, Mode=TwoWay}"/>
                        </df:DataField>
    
                        <df:DataField>
                            <TextBox Text="{Binding Description, Mode=TwoWay}" AcceptsReturn="True" HorizontalScrollBarVisibility="Auto"
                                     VerticalScrollBarVisibility="Auto" Height="" TextWrapping="Wrap" SizeChanged="TextBox_SizeChanged"/>
                        </df:DataField>
    
                        <df:DataField>
                            <TextBlock Text="{Binding Username}" x:Name="tbUsername"/>
                        </df:DataField>
    
                        <df:DataField>
                            <TextBlock Text="{Binding DateCreated, Converter={StaticResource DateConverter}}" x:Name="tbDateCreated"/>
                        </df:DataField>
                    </StackPanel>
                </DataTemplate>
            </df:DataForm.EditTemplate>
        </df:DataForm>
    

    我想根据访问此数据表单的容器的方式来禁用或隐藏最后两个数据字段。我做了一个有两个数据表单的工作,但是这有点过分!有人知道如何在编辑模板中访问这些控件吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Anthony    14 年前

    对此可能还有另一个答案,但我所做的是为我的数据类创建一个分部类,在分部中我添加了一个返回可见性枚举的属性,然后在绑定到控件之前在后面的代码中设置可见性。

     public partial class MyDataClass
     {
        public Visibility IsVisible { get; set; }
    
     }
    

    在实际的xaml中,我将绑定到控件可见性属性,如下所示:

       <df:DataField>    
       <TextBlock  Visibility="{Binding  IsVisible }" Text="{Binding DateCreated, Converter={StaticResource DateConverter}}" x:Name="tbDateCreated"/>    
    

    希望能帮上忙 干杯