相关疑难解决方法(0)

WPF中虚拟设计时数据有哪些方法可用?

我正在使用没有表达式混合,只使用vs2010中的XAML编辑器.除此之外,我越来越多地看到了对设计时数据绑定的需求.对于简单的情况,该FallbackValue属性非常好用(Textboxes和TextBlocks等).但特别是在处理ItemsControl等时,确实需要在设计器中显示样本数据,以便您可以调整和调整控件和数据模板,而无需运行可执行文件.

我知道ObjectDataProvider允许绑定到一个类型,因此可以提供可视化的设计时数据,但是有一些杂耍,允许绑定真实的运行时数据,而不通过加载设计时加载浪费资源, dummied数据和运行时绑定.

我真正想要的是能够拥有,比如"John","Paul","George"和"Ringo"在XAML设计师中作为我的可设置项目出现ItemsControl,但是当应用程序显示真实数据时运行.

我也知道Blend允许一些花哨的属性来定义WPF在运行时条件下有效忽略的设计时绑定数据.

所以我的问题是:

1.我如何利用visual studio XAML设计器中的集合和非平凡数据的设计时绑定,然后平滑地交换到运行时绑定?

2.其他人如何解决这个设计时与运行时数据问题?就我而言,我不能很容易地为两者使用相同的数据(例如,数据库查询可以使用相同的数据).

3.他们可以用于数据集成XAML设计的表达混合替代品吗?(我知道有一些替代方案,但我特别想要一些我可以使用的东西,看看绑定的样本数据等?)

data-binding wpf xaml design-time designer

95
推荐指数
3
解决办法
3万
查看次数

设计时XAML的默认值

我有一个绑定的TextBlockXAML:

<TextBlock Text="{Binding MyText}"/>
Run Code Online (Sandbox Code Playgroud)

我知道FallbackValue如果Binding不可用,可以使用,但这是在运行时发生的吗?有没有办法在设计时显示默认值?如果我在设计窗口而不是空的时候看到一个值,它会让事情变得更容易TextBlock.

谢谢

wpf xaml binding default

22
推荐指数
3
解决办法
1万
查看次数

我需要什么才能进一步限定DataContext的绑定?

我在这个问题中创建并将引用的文件是:

TechnicainSelectionView.xaml
TechnicianSelectionView.cs
TechnicianSelectionViewModel.cs
Technician.cs (Code First Entity)
Run Code Online (Sandbox Code Playgroud)

我的TechnicanSelectionView.xaml中有以下xaml

<UserControl xmlns etc... here" 
             d:DesignHeight="48" d:DesignWidth="300">
    <Grid>
        <StackPanel>
            <Label Content="Select a Technican to run the test" FontWeight="Bold"></Label>
            <ComboBox ItemsSource="{Binding Technicians, Mode=TwoWay}"></ComboBox>
        </StackPanel>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

ItemSource设置为绑定到的Technicians属性表示它 Cannot resolve Technicians due to an unknown DataContext.

因此,如果我们查看我的TechnicianSelectionView.cs代码隐藏...

public partial class TechnicianSelectionView : UserControl
{
    public TechnicianSelectionViewModel ViewModel { get; private set; }

    public TechnicianSelectionView()
    {
        InitializeComponent();

        Technician.GenerateSeedData();

        ViewModel = new TechnicianSelectionViewModel();
        DataContext = ViewModel;
    }
}
Run Code Online (Sandbox Code Playgroud)

...我们看到我正在将视图的DataContext设置为我的TechnicianSelectionViewModel ...

public class TechnicianSelectionViewModel : ViewModelBase
{ …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf mvvm

21
推荐指数
1
解决办法
8764
查看次数

ViewModel的设计时设置

我正在使用Visual Studio 2013的设计器在WPF中创建我的用户控件,而我正在使用MVVM方法.

我正在尝试找到设置我的viewmodel"Design-Time"的最佳方法,以便我立即看到设计师在更改属性值时的效果.我使用了不同的设计和技术来支持这一点,但没有什么是我想要的.我想知道是否有人有更好的想法......

情况(简化):所以我有一个"设备",我希望UserControl显示状态和操作.从上到下:

  • 我有一个IDeviceModel,它有一个字段bool IsConnected {get;}(和状态变化的适当通知)
  • 我有一个实现IDeviceModel的FakeDeviceModel,因此我可以不依赖于真实设备进行设计时和测试
  • DeviceViewModel,包含IDeviceModel,并封装模型的属性.(是的,它有正确的INotifyPropertyChanged通知)
  • 我的UserControl将具有类型为DeviceViewModel的DataContext,并且将具有自定义样式的CheckBox,它是 IsChecked={Binding IsConnected, Mode=OneWay
  • 我的目标:我想在设计时预览Model的IsConnected状态如何影响我的UserControl(所以它可能会影响除IsChecked之外的其他事情)

框架:

  • 我使用MVVM Light ViewModelLocator的想法,返回非静态字段(因此ViewModels的新实例).在运行时,真实的datacontext将由实现此UserControl的那个给出

d:DataContext="{Binding DeviceViewModelDesignTime, Source={StaticResource ViewModelLocator}}"

 public class ViewModelLocator
 {
    private static MainWindowViewModel _mainWindowViewModel;
    public MainWindowViewModel MainWindowViewModelMainInstance
    {
        get
        {
            if (_mainWindowViewModel == null)
            {
                _mainWindowViewModel = new MainWindowViewModel();
            }
            return _mainWindowViewModel;
        }
    }

    public DeviceViewModel DeviceViewModelDesignTime
    {
        get
        {
            //Custom initialization of the dependencies here
            //Could be to create a FakeDeviceModel and assign to constructor
            var deviceViewModel = new DeviceViewModel(); …
Run Code Online (Sandbox Code Playgroud)

wpf blend mvvm visual-studio-2013

13
推荐指数
1
解决办法
5755
查看次数