簡體   English   中英

綁定延遲屬性WPF-我沒有發現任何區別

[英]Binding Delay property WPF - I didn't notice any difference

我試圖了解有關綁定延遲及其影響的更多信息。 我已經實現了一個簡單的代碼,但是老實說,無論有沒有延遲,最終我都沒有注意到任何視覺上的差異。 這是代碼:

<Window x:Class="Example00.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<Grid  >   
    <Grid.RowDefinitions >
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <TextBox Name="mySourceElement" Grid.Row="0" >Hello World</TextBox>
    <TextBlock Grid.Row="1">            
        <TextBlock.Text>
            <Binding ElementName="mySourceElement" Path="Text" Mode="TwoWay" Delay="60000" />
        </TextBlock.Text>
    </TextBlock> 

    <TextBlock Text="{Binding ElementName=mySourceElement, Mode=TwoWay, Path=Text, Delay=50000}" Grid.Row="2" />
</Grid>

它基本上是一個基於Code Project的教程( http://www.codeproject.com/Articles/29054/WPF-Data-Binding-Part-示例零)的代碼,但是使用.Net 4.5並添加了延遲。 我添加了一個很長的延遲以直觀地看到差異,但是與未使用延遲相比,我沒有發現任何不同。

我想知道是否誤解了屬性-其他文本框上的文本是否不應該等待“延遲”量以反映用戶在第一個文本框上鍵入的更改?

是的,您誤解了Delay 該屬性的命名方式非常混亂。 實際上,從目標到源,它只有一種方法。 這意味着當目標中的每個更改都發生時,更新到源的更改將被延遲。 另一種方法將不起作用,這意味着源中發生的每個更改都不會延遲對目標的反射。

所以在這種情況下應該是這樣的:

<!-- NOTE: we name TextBlock as target but 
     in fact it's the source of the Binding -->
<TextBox Text="{Binding Text, ElementName=target, Mode=TwoWay, 
                UpdateSourceTrigger=PropertyChanged, Delay=1000}"
         ></TextBox>
<TextBlock Grid.Row="1" Name="target">            
</TextBlock> 

在您的代碼中, Binding源為TextBox ,目標為TextBlock 因此, TextBox每個更改都將立即反映到TextBlock而不會受到Delay

暫無
暫無

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

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