首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WPF UserControl的<DataTemplate>内访问虚拟机

从WPF UserControl的<DataTemplate>内访问虚拟机
EN

Stack Overflow用户
提问于 2013-02-20 04:58:06
回答 1查看 363关注 0票数 0

我尝试使用ViewModel中的属性为WPF Extended ToolKit中的控件BusyIndicator分配文本值。提供的控件示例使用DataTemplate来分配进度文本。静态赋值文本很好,但是当尝试从VM访问值来赋值时,会导致绑定错误。

在app.xaml.cs中处理的VM分配:

代码语言:javascript
复制
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正常工作:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 05:13:28

在内部使用ContentTemplate绑定时,将针对ContentControlContent属性而不是其DataContext创建DataTemplate

只需设置

代码语言:javascript
复制
BusyContent={Binding}

顺便说一句。正如您从错误中看到的,绑定对象的类型是string

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14967276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档