小编mac*_*369的帖子

ToggleButton根据状态更改图像

我想以下列方式使用ToggleButton:有5个不同的图像,每个图像应根据当前状态显示:

  1. 按钮已禁用
  2. 按钮启用,未选中
  3. 按钮启用,未选中,由鼠标光标指向
  4. 按钮启用,检查
  5. 按钮启用,检查,鼠标光标指向

我发现一个简单的例子有两个影像在这里,但如何改变依赖于"选中"属性的形象呢?

第二个问题:如何避免为我的应用程序中的每个按钮创建不同的样式?我使用了大约20个不同的按钮,每个按钮都有不同的图标.

到目前为止,我只在我的代码下面使用了一个图标.是否可以使用公共代码(样式和模板)并在我想要创建按钮的部分中定义图像源(如我的代码的第3部分)?

<ControlTemplate x:Key="ToggleButtonTemplate" TargetType="{x:Type ToggleButton}">
    <Grid>
        <Border x:Name="ContentBorder" CornerRadius="4" BorderBrush="Transparent" BorderThickness="1" Background="{DynamicResource ButtonOff}">
            <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
        </Border>
    </Grid>
    <ControlTemplate.Triggers>
        <Trigger Property="IsPressed" Value="true">
            <Setter TargetName="ContentBorder" Property="Background" Value="{DynamicResource ButtonOn}"/>
        </Trigger>
        <Trigger Property="IsChecked" Value="true">
            <Setter TargetName="ContentBorder" Property="Background" Value="{DynamicResource ButtonOn}"/>
        </Trigger>
        <Trigger Property="IsEnabled" Value="false">
            <Setter TargetName="ContentBorder" Property="Background" Value="{DynamicResource ButtonDisabled}"/>
            <Setter Property="Foreground" Value="{DynamicResource BorderDisabled}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

<Style x:Key="ToggleButtonStyle" TargetType="{x:Type ToggleButton}">
    <Setter Property="Width" Value="64" />
    <Setter Property="Height" Value="64" …
Run Code Online (Sandbox Code Playgroud)

c# wpf wpf-controls

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

如何更改.NET用户设置位置

默认情况下,设置存储在: C:\Documents and Settings\\Local Settings\Application Data\<Project Name>

如何将此路径更改为应用程序目录.我也不想为不同的用户提供不同的文件.如何使设置全局?

我试图将设置的范围更改为"应用程序",但我无法在运行时更改它们.

c# appsettings application-settings

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

两个.NET线程和硬件访问的问题

我正在创建一个通过FT2232H USB/RS232转换器与设备通信的应用程序.对于通信我正在使用FTDI网站上的FTD2XX_NET.dll库.
我正在使用两个线程:

  • 第一个线程连续从设备读取数据
  • 第二个线程是Windows窗体应用程序的主线程

    当我在接收器的线程运行时尝试将任何数据写入设备时,我遇到了问题.主线程只是挂起在ftdiDevice.Write函数上.

    我尝试同步两个线程,以便只有一个线程可以同时使用读/写功能,但它没有帮助.

    下面的代码负责沟通.请注意,以下函数是FtdiPort类的方法.

    接收者的线程

    
            private void receiverLoop()
            {
                if (this.DataReceivedHandler == null)
                {
                    throw new BackendException("dataReceived delegate is not set");
                }
    
                FTDI.FT_STATUS ftStatus = FTDI.FT_STATUS.FT_OK;
                byte[] readBytes = new byte[this.ReadBufferSize];
    
                while (true)
                {
                    lock (FtdiPort.threadLocker)
                    {
                        UInt32 numBytesRead = 0;
    
                        ftStatus = ftdiDevice.Read(readBytes, this.ReadBufferSize, ref numBytesRead);
    
                        if (ftStatus == FTDI.FT_STATUS.FT_OK)
                        {
                            this.DataReceivedHandler(readBytes, numBytesRead);
                        }
                        else
                        {
                            Trace.WriteLine(String.Format("Couldn't read data from ftdi: status {0}", ftStatus));
                            Thread.Sleep(10);
                        }                    
                    }
                    Thread.Sleep(this.RXThreadDelay);
    
                }
            }
    
    Run Code Online (Sandbox Code Playgroud)


    从主线程调用的写函数

        public void Write(byte[] data, …
    Run Code Online (Sandbox Code Playgroud)
    Run Code Online (Sandbox Code Playgroud)
  • c# multithreading hardware-interface

    8
    推荐指数
    2
    解决办法
    6131
    查看次数

    如何简化代码文档流程 - visual studio C#

    我想知道visual studio中是否有任何快捷方式可以为方法或类生成自动文档.

    例如,当我写一个方法时:

    public void MyFunction(int d)
    {
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我想生成以下结构:

        /// <summary>
        /// 
        /// </summary>
        /// <param name="d"></param>
    
    Run Code Online (Sandbox Code Playgroud)

    c# documentation

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