2

今日、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>

このデータフォームのコンテナへのアクセス方法に応じて、最後の2つのデータフィールドを無効または非表示にしたかったのです。2つのデータ形式を持つ回避策を実行しましたが、これは少し過剰です!編集テンプレート内のこれらのコントロールにアクセスする方法を知っている人はいますか?

4

1 に答える 1

3

これには別の答えがあるかもしれませんが、データ クラスの部分クラスを作成し、その部分に Visibility 列挙型を返すプロパティを追加し、コントロールにバインドする前にコード ビハインドで可視性を設定しました。

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

 }

実際の XAML では、コントロールの Visibility プロパティに次のようにバインドします。

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

乾杯に役立つことを願っています

于 2010-04-14T23:14:58.437 に答える