相关疑难解决方法(0)

如何在XAML中将颜色转换为画笔?

我想将System.Windows.Media.Color值转换为System.Windows.Media.Brush.颜色值被数据绑定到Rectangle对象的Fill属性.Fill属性采用Brush对象,因此我需要一个IValueConverter对象来执行转换.

WPF中是否有内置转换器,还是需要创建自己的转换器?如果有必要,我该如何创建自己的?

data-binding wpf xaml colors converter

49
推荐指数
4
解决办法
5万
查看次数

WPF MultiBinding失败.为什么?

我有这个标记:

   <GroupBox BorderThickness="2">
    <GroupBox.BorderBrush>
        <SolidColorBrush x:Name="Border">
            <SolidColorBrush.Color>
                <MultiBinding Converter="{StaticResource ConnectionAndLoggedInToBorderBrush}">
                    <Binding Path="IsConnected"/>
                    <Binding Path="IsLoggedIn"/>
                </MultiBinding>
            </SolidColorBrush.Color>
        </SolidColorBrush>
    </GroupBox.BorderBrush>
Run Code Online (Sandbox Code Playgroud)

在后面的代码中我在window_loaded方法中有这一行:

DataContext = uiManager;
Run Code Online (Sandbox Code Playgroud)

uiManager是UIManager类型,它有两个名为IsConnected和IsLoggedIn的公共属性.

此代码在启动时失败,因为Multibinding调用的Converter中的values数组未填充布尔值,但值为DependencyProperty.UnsetValue.

当我使用下面的标记(并更改转换器的返回类型)时,它确实有效.

   <GroupBox BorderThickness="2">
    <GroupBox.BorderBrush>
         <MultiBinding Converter="{StaticResource ConnectionAndLoggedInToBorderBrush}">
              <Binding Path="IsConnected"/>
              <Binding Path="IsLoggedIn"/>
         </MultiBinding>
    </GroupBox.BorderBrush>
Run Code Online (Sandbox Code Playgroud)

在第一个示例中,似乎通过后面代码中的DataContext的绑定集失败,但在第二个示例中工作.为什么?

为了UIManager类下面的完整性:

public class UIManager:IUIManager
    {

        #region Implementation of IUIManager

        private const string IsLoggedInProperty = "IsLoggedIn";
        private bool loggedIn;
        private readonly object loggedInLock = new object();
        public bool IsLoggedIn
        {
            get
            {
                lock (loggedInLock)
                {
                    return loggedIn;
                }
            }
            set
            {
                lock (loggedInLock) …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding wpf multibinding

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

ControlTemplate Storyboard颜色动画问题

我有彩色动画的问题.这是我的来源:

 <Window.Resources>
    <hedit:BrushToColorConverter x:Key="BrushToColorConverter" />
    <Style x:Key="MyButtonStyle" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Margin" Value="5"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <ControlTemplate.Resources>
                        <Storyboard x:Key="buttonAnimIn">
                            <!-- Problem line -->
                            <ColorAnimation Storyboard.TargetName="bntBack" Storyboard.TargetProperty="Color" To="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource BrushToColorConverter}}" />
                        </Storyboard>
                        <Storyboard x:Key="buttonAnimOut">
                            <ColorAnimation Storyboard.TargetName="bntBack" Storyboard.TargetProperty="Color" To="Blue" />
                        </Storyboard>
                        <Storyboard x:Key="buttonAnimForegroundIn">
                            <ColorAnimation Storyboard.TargetName="btnFore" Storyboard.TargetProperty="Color" To="Blue" />
                        </Storyboard>
                        <Storyboard x:Key="buttonAnimForegroundOut">
                            <ColorAnimation Storyboard.TargetName="btnFore" Storyboard.TargetProperty="Color" To="Red" />
                        </Storyboard>
                    </ControlTemplate.Resources>
                    <Border Name="border" 
                        BorderThickness="1"
                        Padding="4,2" 
                        BorderBrush="DarkGray" 
                        CornerRadius="3">
                        <Border.Background>
                            <SolidColorBrush Color="Blue" x:Name="bntBack" />
                        </Border.Background>
                        <ContentControl HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}"> …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf animation xaml

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

标签 统计

wpf ×3

.net ×2

c# ×2

data-binding ×2

xaml ×2

animation ×1

colors ×1

converter ×1

multibinding ×1