小编Jun*_*222的帖子

WPF禁用按钮的背景

我禁止在禁用时更改按钮的样式:

    <Style TargetType="Button" x:Key="MyButton2">
        <Setter Property="Background" Value="MediumAquamarine" />
        <Setter Property="Foreground" Value="MediumBlue" />

        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="false">
                <Setter Property="Background" Value="Green"/>
                <Setter Property="Foreground" Value="DeepPink"/>
            </Trigger>
        </Style.Triggers>

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

和我的按钮:

<Button Style="{StaticResource MyButton2}" Content="My text" Width="100" Height="30" IsEnabled="False" />    
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,此样式不适用于按钮:

在此输入图像描述

如何将此样式应用于我的按钮?我可以不用覆盖按钮的模板而只使用样式吗?

wpf xaml styles

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

WPF 如何更新 CanExecute

我有以下问题。

我有以下简单的 xaml:

<TextBox Name="NameBox" Text ="{Binding Name}" />
<Button Content="Save" Command="{Binding SaveCommand}" CommandParameter="{Binding Entity}"  />
Run Code Online (Sandbox Code Playgroud)

我将此窗口的 DataContext 绑定到以下视图模型

public class MyViewModel
{
    public SimpleModel Entity { get; set; }

    private ICommand _saveCommand;

    public ICommand SaveCommand { get { return _saveCommand ?? (_saveCommand = new MyCommand(OnSaveItem, parameter => CanSaveItem())); } }

    public void OnSaveItem(object parameter) 
    {
        // some code
    }

    public virtual bool CanSaveItem()
    {
        return !String.IsNullOrWhiteSpace(Entity.Name);
    }

}      
Run Code Online (Sandbox Code Playgroud)

简单模型是

public class SimpleModel
{        
    public int Id { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml mvvm

8
推荐指数
1
解决办法
9991
查看次数

Xamarin Studio和项目参考

所以我尝试通过Xamarin Studio 5.4开发小型andriod应用程序.我的解决方案中有三个项目 - android应用程序项目(ClientProject),第一个使用的类库(MyLib)和一些控制台应用程序(ConsoleApp).

但是当我尝试将对MyLib的引用添加到ClientProject中时,我失败了.Xamarin Studio告诉我"不兼容的目标框架.NET Framework 4.0".

看起来这个

在此输入图像描述

我将MyLib的框架版本更改为3.5,但是它没有任何效果.

但是,当我尝试将此引用添加到ConsoleApp时,没有问题:

在此输入图像描述

所以我必须向ClientProject添加对MyLib.dll的引用,因此我无法调试其代码.我该怎么做才能解决这个问题?

c# dll android xamarin-studio

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

WPF 将命令绑定到 ContextMenu

我在 WPF 中的命令绑定方面遇到问题。我有以下 xaml:

<ItemsControl ItemsSource="{Binding Entity}" Name="Lst">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>                    
                <Button  Content="qwerty" Command="{Binding ElementName=Lst, Path=DataContext.SaveCommand}" >
                    <Button.ContextMenu>
                        <ContextMenu>                                
                            <MenuItem Header="Send2" Command="{Binding ElementName=Lst, Path=DataContext.SaveCommand}" />
                        </ContextMenu>
                    </Button.ContextMenu>    
                </Button>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Button 及其 ContextMenu 具有类似的命令绑定。但是,当我单击按钮时,它的命令会触发,而当我单击上下文菜单的项目时,它的命令不会触发。我哪里错了?提前致谢!

c# data-binding wpf xaml

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

WPF按钮样式和模板

所以我有按钮及其样式:

\n
<Style TargetType="Button" x:Key="BaseButtonStyle">\n    <Setter Property="FontWeight" Value="Bold"  />\n    <Setter Property="Width" Value="120" />\n    <Setter Property="Height" Value="30" />\n    <Setter Property="BorderBrush" Value="#1FA3FF"  />\n</Style>\n\n<Style TargetType="{x:Type Button}" x:Key="MyButtonStyle"  BasedOn="{StaticResource BaseButtonStyle}">          \n    <Setter Property="Background" Value="#1FA3EB"  />\n    <Setter Property="Foreground" Value="#FFFFFF"  />\n</Style>\n\n<Button Style="{StaticResource MyButtonStyle}" Content="My text" />\n
Run Code Online (Sandbox Code Playgroud)\n

它工作正常,我得到以下结果(海蓝宝石背景不是按钮的一部分,它属于窗口):

\n

在此输入图像描述

\n

但后来我想替换按钮的内容并更改我的样式:

\n
<Style TargetType="{x:Type Button}" x:Key="MyButtonStyle"  BasedOn="{StaticResource BaseButtonStyle}">          \n    <Setter Property="Background" Value="#1FA3EB"  />\n    <Setter Property="Foreground" Value="#FFFFFF"  />\n\n    <Setter Property="Template">\n        <Setter.Value>\n            <ControlTemplate>\n                <StackPanel Orientation="Horizontal">\n                    <TextBlock Text="\xe2\x88\x9a" />\n                    <TextBlock Text="{TemplateBinding Button.Content}" />\n                </StackPanel>\n            </ControlTemplate>\n        </Setter.Value>\n    </Setter>\n</Style>\n
Run Code Online (Sandbox Code Playgroud)\n

现在我的按钮变得很糟糕: …

c# wpf xaml templatebinding

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

在C#中异步下载文件

我对C#中的异步操作有疑问.假设我有一些像这样的代码:

public async void Download(string[] urls)
{
    for(int i = 0; i < urls.Length; i++);
    {
        await DownloadHelper.DownloadAsync(urls[i], @"C:\" + i.ToString() + ".mp3");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码并没有真正异步下载文件.它开始从第一个URL下载文件,然后等待此操作.然后它开始从第二个URL下载文件......依此类推.

从而逐个下载文件,我想让它们同时开始下载.

我怎么能这样做?

.net c# task-parallel-library async-await

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