簡體   English   中英

WPF可編輯文本塊項控制MVVM

[英]WPF editable textblock itemscontrol MVVM

我有一個itemscontrol,它使用子控件重復stackpanel。 每個堆棧面板都包含一個我希望可編輯的文本塊。 該項目已實施了MVVM框架,這使這一工作變得困難。 我認為最好的方法是在每個連接到BooleanToVisibilityConverter的堆棧面板中創建一個按鈕。 該轉換器連接到文本塊,然后反向連接到文本框。 因此它顯示了兩者之一。 問題是我無法實現此解決方案。

如果我將可見性綁定到后端,那么這將導致顯示所有文本塊或非文本塊。 我現在的解決方案如下:

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <CheckBox x:Name="DisplayBox" IsChecked="False"/>
        <TextBlock Visibility="{Binding ElementName=DisplayBox,
                                        Path=IsChecked, 
                                        Converter={StaticResource BoolToVis}}">
             <Run Text="{Binding Title}"/>
        </TextBlock>
</StackPanel>

所以我的問題是:是否有一種簡單的方法來實現僅將XAML綁定到每個控件的可編輯文本塊? 還是我需要實現一種將其連接到后端的方法。

這將導致顯示所有文本塊

使用控件的名稱綁定到它是我經常使用的策略,但是這次它使您失望,因為您處於重復模板中。 為了在模板中使用該綁定過程選擇將變為全局而不是局部。

因此, 一種策略是使用RelativeSource綁定並指向本地父級(復選框),例如:

<CheckBox IsChecked="False">
    <TextBlock Visibility="{Binding IsChecked, 
                                    Converter={StaticResource BoolToVis},
                                    RelativeSource={RelativeSource Mode=FindAncestor, 
                                                     AncestorType={x:Type CheckBox}
                                                   }
                            }">
        <Run Text="{Binding Title}" />
    </TextBlock>
</CheckBox>

順便說一句不要以錯誤的方式讀這本書

該項目已實施了MVVM框架,這使這變得困難。

MVVM只是分離代碼關注點(操作,類和GUI)的一種方式,坦率地說,在處理Xaml綁定時不一定要發揮作用。

數據是駐留在VM上還是頁面上是無關緊要的,因此要設置頁面的數據上下文或控件的數據上下文具有要由綁定系統反映的有效類實例。 一無所有

對於新程序員,有很多概念,例如MVVM和綁定,並且學習曲線很重要。 我的建議是,這個流行詞曾經是三層系統。現在是MVVM或MVC,但最終它們都做很多相同的事情,只是將那些編程問題分開了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM