小编akj*_*shi的帖子

在wpf世界中使用6个月并且不使用混合物应该使用它吗?

我正在寻找一些指导和建议.我是wpf"6个月"的新手,在Windows窗体中开发了8年.

我仍然没有打开或使用blend.I可以看到这是一个设计师的工具,但从程序员的角度来看,这些天有很多东西需要学习,不知道我是否应该打扰.

我是否应该学习如何使用混合物?除了设计东西之外还融合了任何很酷的功能,并使它变得漂亮,这将使我作为一名wpf程序员的生活更轻松吗?

如果您认为我应该学会使用表达混合,请告诉我?

谢谢

编辑

我不知道如何为每个人提供一般性答案,所以我编辑了我的问题.

伙计们非常感谢你们所有的答案都很好.我一定会看到它,但不会深入.一个有趣的观点是看看如何构建控件并从中学习.在这个阶段我根本不做任何设计我只是一个纯粹的开发人员.再次感谢.

.net wpf xaml expression-blend

10
推荐指数
2
解决办法
428
查看次数

WPF ControlTemplates必须有TargetType吗?

WPF中的ControlTemplates是否需要TargetType?我正在重新设置一些控件,并注意到comboboxitem,listiviewitem和listboxitem都具有相同的模板:

    <ControlTemplate x:Key="ListBoxItemCT" TargetType="{x:Type ListBoxItem}">

    <Border x:Name="Bd" 
        SnapsToDevicePixels="true" 
        Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Padding="{TemplateBinding Padding}"
        CornerRadius="1">
        <ContentPresenter x:Name="cpItemContent"
            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
            VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
            />
    </Border>

</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

是否可以删除TargetType并为所有三个模板设置一个模板?我试图这样做,但得到奇怪的错误和问题.我找不到ControlTemplates必须具有类型的任何特定参考.

.net wpf templates controltemplate targettype

10
推荐指数
1
解决办法
3669
查看次数

为什么WPF绑定以两种不同的方式处理INotifyPropertyChanged?

我最近发现wpf以两种不同的方式处理INotifyPropertyChanged.我只是想知道是什么原因.

让我们采用正常的双向绑定验证为真.

如果你将一个属性从ui设置为viewmodel就像这样.

  • 塞特电话开始了
  • 价值集
  • INotifyPropertyChanged开始了
  • INotifyPropertyChanged完成了
  • 二传完成
  • 得到了呼唤和完成
  • IDataErrorInfo调用并完成

但如果你在viewmodel中设置了属性,它会像这样

  • 塞特电话开始了
  • 价值集
  • INotifyPropertyChanged开始了
  • 得到了呼唤和完成
  • IDataErrorInfo调用并完成
  • INotifyPropertyChanged完成了
  • 二传完成

wpf binding inotifypropertychanged

10
推荐指数
1
解决办法
585
查看次数

多语种wpf应用程序

我有一个WPF应用程序(英文),我想让用户选择不同的语言.我已经阅读了一些在运行时应用程序中更改语言的可能性,但我只想在安装时选择一种语言,而不是更改它.

您认为最快最容易的方法是开发不同版本的程序(仅更改文本语言)并让用户在安装过程中选择其中一个版本吗?可能重复代码只更改文本框或标签不是很优雅,但请注意我的应用程序用英语完成,我不需要在运行时更改语言.

.net c# wpf multilingual

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

如何在ZK中调用javascript函数

在ZK框架中,在zul文件中我想调用javascript函数但它不会发生.

<a label="Click" onClick="popUp();">
Run Code Online (Sandbox Code Playgroud)

我也有popUp()函数.但是当我点击时

<script type="text/javascript">
    function createPopUp(url)
    {
        var w = 600;
        var h = 500;
        var left = (screen.width/2)-(w/2);
        var top = (screen.height/2)-(h/2);
        window.open(url,'name','scrollbars=yes,width='+w+', height='+h+', top='+top+', left='+left);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但是,当我点击该链接时,它显示以下错误:

Sourced file: inline evaluation of: `` popUp();'' : 
Command not found: popUp() : at Line: 13 : 
in file: inline evaluation of: `` popUp();'' : popUp ( ) 
Run Code Online (Sandbox Code Playgroud)

javascript zk

10
推荐指数
2
解决办法
1万
查看次数

WPF绑定与int类型的属性无法正常工作

int在我的视图模型中有一个类型的属性,它绑定到a TextBox.一切正常,TwoWay绑定工作正常,除了一个案例 -

如果我清除了值TextBox,则不会调用属性setter,虽然清除了值TextBox,但属性仍保留先前的值.

有没有人遇到类似的问题?这有什么解决方法吗?

这是物业 -

public int MaxOccurrences
{
    get
    {
        return this.maxOccurrences;
    }
    set
    {
        if (this.maxOccurrences != value)
        {
            this.maxOccurrences = value;
            base.RaisePropertyChanged("MaxOccurrences");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我如何绑定xaml中的属性 -

<TextBox Text="{Binding Path=MaxOccurrences, Mode=TwoWay, 
    NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" 
    HorizontalAlignment="Center" Width="30" Margin="0,0,5,0"/>
Run Code Online (Sandbox Code Playgroud)

c# data-binding silverlight wpf xaml

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

ListBox.ItemsSource绑定代码和xaml

我写了简单的代码

public ObservableCollection<string> Names …
public Window1()
{
    PutInDataIntoNames();
    InitializeComponent();
    this.listBox1.ItemsSource = Names;
}
Run Code Online (Sandbox Code Playgroud)

并在xaml

<Grid>
    <ListBox Margin="10,11,10,16"
         Name="listBox1"
         Background="Black" 
         Foreground="Orange" 
         />
</Grid>
Run Code Online (Sandbox Code Playgroud)

然后我想在xaml中设置ItemsSource属性.为了做到这一点,我写了以下内容:

ItemsSource="{Binding Path=Names}"
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用.你能解释为什么以及如何做到这一点吗?

wpf listbox itemssource

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

GC的固定实例 - 无法从我的托管代码中追溯

所以我使用WPF 3.5和MVVM + DataTemplate方法在GUI上加载2个视图.我在内存分析中观察到,作为项目控件的项容器的一部分生成的项目被固定到内存中,即使在卸载视图后也不会获得GCed!

我刚刚运行测试,发现即使对于最简单的代码,它也是可重现的...你们可以自己检查一下.

XAML:

<Window x:Class="ContentControlVMTest.Window2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:ContentControlVMTest"
        Title="Window2" Height="300" Width="300">
    <DockPanel LastChildFill="True">

        <CheckBox Click="CheckBox_Click" Content="Test1?"
                  DockPanel.Dock="Top" Margin="5"/>

        <ContentControl x:Name="contentControl">
            <ContentControl.Resources>

                <DataTemplate DataType="{x:Type local:Test3}">
                    <TextBlock Text="{Binding C}" Margin="5"/>
                </DataTemplate>

                <DataTemplate DataType="{x:Type local:Test1}">
                    <DockPanel LastChildFill="True" Margin="5">
                        <TextBlock Text="{Binding A}"
                                   DockPanel.Dock="Top"
                                   Margin="5"/>
                        <ListBox ItemsSource="{Binding Bs}"
                                 DisplayMemberPath="B"
                                 Margin="5"/>
                    </DockPanel>
                </DataTemplate>
            </ContentControl.Resources>
        </ContentControl>
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

public class Test3
{
    public string C { get; set; }
}

public class Test2
{
    public string B { get; set; }
}

public …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf garbage-collection pinning

9
推荐指数
1
解决办法
1170
查看次数

使用IncludeHeader ClipboardCopyMode的WPF Datagrid COMException

在我的WPF应用程序中,我使用的是Datagrid控件; 在控件定义中,我将ClipboardCopyMode属性定义为'IncludeHeader'.

<DataGrid Name="datagrid"  ClipboardCopyMode="IncludeHeader">
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

有时,当我尝试从网格中复制任何数据时,我遇到HRESULT剪贴板崩溃错误 -

System.Runtime.InteropServices.COMException (0x800401D0): 
OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))
Run Code Online (Sandbox Code Playgroud)

任何解决它的建议.我查看了其他帖子,主要是关于如何在明确使用Clipboard相关方法时如何处理这种情况,但没有相关的方法Datagrid.

.net wpf clipboard wpfdatagrid

9
推荐指数
1
解决办法
3484
查看次数

ToolTip与Popup(WPF控件)

这些WPF控件之间的主要区别是什么?
而当我应该使用ToolTip而不是Popup

wpf popup tooltip

9
推荐指数
1
解决办法
6380
查看次数