[英]Accessing VM from within <DataTemplate> of WPF UserControl
我試圖使用ViewModel中的屬性為WPF Extended ToolKit中的控件BusyIndicator分配文本值。 提供的控件示例使用DataTemplate分配進度文本。 靜態分配文本是可以的,但是當嘗試從VM訪問值來分配值時會導致綁定錯誤。
在app.xaml.cs中處理的VM分配:
public partial class App : Application {
private void OnStartup(object sender, StartupEventArgs seArgs) {
MainWindowView mwv = new MainWindowView();
mwv.DataContext = new DataSetViewModel(new DataSetModel());
mwv.Show();
}
}
除了從VM獲得的內容字符串之外,View Control均可工作:
<kit:BusyIndicator IsBusy="{Binding Path=ProcessingData,Converter={StaticResource busyIndicator}}"
DisplayAfter="0"
>
<kit:BusyIndicator.BusyContentTemplate>
<DataTemplate>
<StackPanel Margin="4">
<!-- Output Error is 'WaitProgressUploadTitle' property not found on 'object' ''String' (HashCode=-775806441)'... -->
<!-- Output Error is 'WaitProgressUploadContent' property not found on 'object' ''String' (HashCode=-775806441)'... -->
<TextBlock Text="{Binding Path=WaitProgressUploadTitle}" FontWeight="Bold" HorizontalAlignment="Center"/>
<StackPanel Margin="4">
<TextBlock Text="{Binding Path=WaitProgressUploadContent}" />
<ProgressBar Value="40" Height="15"/>
</StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Pause" HorizontalAlignment="Right" Margin="0 0 2 0"/>
<Button Grid.Column="1" Content="Cancel" HorizontalAlignment="Left" Margin="2 0 0 0"/>
</Grid>
</StackPanel>
</DataTemplate>
</kit:BusyIndicator.BusyContentTemplate>
<kit:BusyIndicator.OverlayStyle>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="#ffffeeee"/>
</Style>
</kit:BusyIndicator.OverlayStyle>
<kit:BusyIndicator.ProgressBarStyle>
<Style TargetType="ProgressBar">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</kit:BusyIndicator.ProgressBarStyle>
<TextBlock Text="CONTENTCONTENTCONTENTCONTENT" Margin="0,100,0,0" HorizontalAlignment="Center" MaxWidth="675" TextAlignment="Center" FontSize="20" Visibility="{Binding Path=FileOpenGood,Converter={StaticResource errorVisibility}}" Background="Cornsilk" />
</kit:BusyIndicator>
當您使用ContentTemplate
,將根據ContentControl
Content
屬性而不是其DataContext
綁定DataTemplate
內部
剛設定
BusyContent={Binding}
順便說一句 從錯誤中可以看到,綁定對象的類型為string
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.