我創建了一個TreeViewItem,它裏面有一個ProgressBar。TreeViewItem中的ProgressBar
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Height="35" MinWidth="100">
<CheckBox Name="chk" IsChecked="True" Margin="2" Tag="{Binding}" Style="{DynamicResource myCheckBoxStyle}" />
<TextBlock Text="{Binding}" Padding="0 10 0 10" Width="100" />
<ProgressBar x:Name="tvProgressBar" HorizontalAlignment="Right" Width="300" Height="20" Foreground="#FF089ACE" />
</StackPanel>
</DataTemplate>
但我似乎無法更新進度的價值,我可以通過做
ProgressBar pb = (System.Windows.Controls.ProgressBar)(tv.HeaderTemplate.LoadContent() as StackPanel).FindName("tvProgressBar");
找到進度條但當我更新進度條的值的UI不更新。如果我在TreeView之外創建一個ProgressBar,按預期進行更新,這似乎是我要麼訪問TreeViewItem中嵌入ProgressBar的方式,要麼是它需要更新的方式。
嘗試與'MinValue'和默認值'MaxValue'性能可能設置爲'MINVALUE = 1','的MaxValue = 100'。無法準確記得屬性名稱是'MinValue'或'MinimumValue'。 –
最小值和最大值並不相同,因爲反正 –
只有兩個原因可能導致您的進度條不能直觀更新:** 1)**實際上並非實際更改'值'或** 2) **您正在嘗試顯示正在UI線程中執行的操作的進度。使用'ProgressBar'的正確方法是在後臺線程中運行長時間運行的操作(例如'Task.Run()'),並讓該操作更新一個_view model_屬性,該屬性綁定到ProgressBar.Value財產。你沒有發佈可靠地再現問題的好的[mcve],所以不可能真正回答問題。 –