小编Oh *_*Dog的帖子

C#如何知道可移动磁盘是USB驱动器还是SD卡?

Windows 7平台,C#

我使用以下语句列出所有驱动器:

DriveInfo[] drives = DriveInfo.GetDrives();
Run Code Online (Sandbox Code Playgroud)

然后我可以使用DriveType找出所有可移动磁盘:

foreach (var drive in drives)
{
     if(drive.DriveType == DriveType.Removable)
         yield return drive;
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,SD卡磁盘和USB闪存盘共享相同的driveType:可移动,那么我怎么才能找到USB闪存盘?

谢谢!

c# removable

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

C# 如何从 WMI 查询网络摄像头?

我在 WMI 中使用此查询来获取所有 USB 设备:

SELECT * FROM Win32_USBControllerDevice
Run Code Online (Sandbox Code Playgroud)

结果是这样的序列项目:

Antecedent: \\PC\root\cimv2:Win32_UsbController.DeviceID="PCI\VEN82......"
Dependent: \\PC\root\cimv2:Win32_UsbController.DeviceID="USB\\ROOT_HUB20..."
Run Code Online (Sandbox Code Playgroud)

我想找到网络摄像头设备,但我找不到基于这些项目的任何线索。我觉得我用错了方法?

我不想使用 Aforge.net 这样的 3rd 方来做这件事,只是为了列出网络摄像头,我只想使用 WMI。

所以,有人会帮助我吗?谢谢你。

[问题解决了]

使用 SELECT * FROM Win32_PnPEntity

c# usb wmi

5
推荐指数
0
解决办法
2063
查看次数

C#WPF - 如何组合datatrigger和触发器?

我不知道是否需要结合DataTrigger和Trigger,如果有更好的方法请告诉我.

我的目标是,创建一个菜单(带图标),图标会在遇到悬停或选定的事件时发生变化.

这是一个枚举定义所有菜单类型:

public enum PageTypes:byte
{
    NotSet = 0,
    HomePage = 1,
    ShopPage = 2,
    AboutPage = 3
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个MenuItemModel来表示每个菜单项:

public class MenuItemModel : INotifyPropertyChanged
{
    private PageTypes _menuItemType = PageTypes.NotSet;
    public PageTypes MenuItemType { get { return _menuItemType; } set { if (value != _menuItemType) { _menuItemType = value; RaisePropertyChanged(() => MenuItemType); } } }

    private bool _isSelected = false;
    public bool IsSelected { get { return _isSelected; } set { if (value != _isSelected) { _isSelected = …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

C# WPF Frame 如何在页面上创建幻灯片效果?

我想在WPF,Frame控件上制作页面幻灯片效果。开始了。

首先,我放了一个框架和两个导航按钮:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="25"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="25"/>
    </Grid.ColumnDefinitions>
    <Frame x:Name="frame" Source="page1.xaml" Grid.Column="1" />
    <Button Grid.Column="0" Content="&lt;" Click="GoPrevious"/>
    <Button Grid.Column="2" Content="&gt;" Click="GoNext"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

然后我创建了 3 个不同颜色的页面:Page1.xaml、Page2.xaml 和 Page3.xaml

现在,当单击导航按钮时,只需导航到一个 uri:

frame.Navigate(new Uri("page2.xaml", UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)

完毕。现在我想在导航时使每个页面滑动(每个人都想要它)。所以我的计划是设置每个页面的 Loaded EventTrigger:

<Page.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <ThicknessAnimation Duration="0:0:0.75" Storyboard.TargetProperty="Margin" From="500,0,-500,0" To="0" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="FrameworkElement.Unloaded">
        <BeginStoryboard>
            <Storyboard>
                <ThicknessAnimation Duration="0:0:0.75" Storyboard.TargetProperty="Margin" From="0" To="-500,0,500,0" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Page.Triggers>
Run Code Online (Sandbox Code Playgroud)

它有效!一切正常,直到我发现页面不连续,这意味着,当您导航到 page2 时,page1 将立即卸载,而不是开始 page2 加载事件。我试图设置 page1 的卸载事件,但不起作用。

我想要的是,当page1开始退出时,page2应该马上就上台了,就像一列火车一样。

那么怎么做呢?谢谢。

c# wpf slide

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

C#WPF如何正确关闭新窗口?

我有一个简单的问题:

  1. 创建一个新的WPF项目,其中有一个启动窗口(MainWindow.xaml)。
  2. 在此项目中,创建一个新的Window(Window1.xaml)
  3. Windows1的loaded事件,让它关闭:

    private void Window_Loaded(object sender, RoutedEventArgs e) { this.Close(); }

  4. 在MainWindow上放置一个“打开”按钮,实现它的click事件:

    private void button_Click(object sender, RoutedEventArgs e) { Window1 w = new Window1(); w.Show(); }

当我启动该应用程序时,VS2015的UI变为“调试模式”,然后单击Window右上角的关闭按钮,VS2015的UI返回正常模式。

现在,如果我启动应用程序,请单击“打开”按钮,然后Window1将快速显示并关闭,但是,如果我单击MainWindow右上角的关闭按钮,则情况有所不同:VS2015将不会返回正常模式,而是保持不变在“调试模式”下。所以对我来说,那意味着有些东西挂在那里,我不知道那是什么。

有谁知道如何解决这个问题?

c# wpf window

4
推荐指数
2
解决办法
1142
查看次数

UWP:如何在 ResourceDictionary 中使用 x:bind?

我想在 UWP 中使用 ResourceDictionary 就像我在 WPF 中使用的那样在 WPF 中,我在 ResourceDictionary 文件(*Style.xaml)中执行此操作

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
    xmlns:models="using:NWP.Models">

<Style x:key="MenuContent" TargetType="ContentControl">
    <Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="ContentControl">
            <controls:DockPanel>
                <ItemsControl ItemsSource="{x:Bind How-Can-I-Bind-Collection-Here?}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate x:DataType="models:MenuItemModel">
                            <RadioButton GroupName="MenuItems" IsChecked="{x:Binding IsChecked, Mode=TwoWay}" MinHeight="0" MinWidth="0" Command="{Binding Command}" CommandParameter="{Binding}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>

                <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
            </controls:DockPanel>
        </ControlTemplate>
    </Setter.Value>
</Style>

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

然后我可以在我的页面中使用这种样式:

<ContentControl Style="{StaticResource MenuContent}">
    <StackPanel Orientation="Vertical">
        <TextBox/>
        <PasswordBox/>
        <Button Content="Login"/>
    </StackPanel>
</ContentControl> …
Run Code Online (Sandbox Code Playgroud)

resourcedictionary uwp xbind

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

WPF 用户控件附加到边框时显得模糊

我遇到了一个非常奇怪的问题。这是我的观点:

    <Grid>
        <Border x:Name="C01" VerticalAlignment="Center" Panel.ZIndex="2" HorizontalAlignment="Center" />
    </Grid>
Run Code Online (Sandbox Code Playgroud)

这是我想在视图中显示的用户控件:

    <UserControl x:Class="Nwp.UserComponents.ULogin"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             Width="350" Height="220">
        <Grid>
            <Border Margin="10" BorderBrush="DimGray" BorderThickness="1" Background="White">
                <Border.Effect>
                    <DropShadowEffect ShadowDepth="0" BlurRadius="10"/>
                </Border.Effect>
                <Grid>
                    <!-- ... here's content -->
                </Grid>
            </Border>
        </Grid>
    </UserControl>
Run Code Online (Sandbox Code Playgroud)

为了显示用户控件,我将其添加为边框“C01”的子控件,如下所示:

C01.Child = new ULogin();
Run Code Online (Sandbox Code Playgroud)

到目前为止一切正常,看起来像这样:

看起来不错

请注意,用户控件的宽度和高度是 2 个偶数:350 和 220。如果将其中一个更改为奇数,则用户控件显示会有点模糊:

宽度351

当我再次使用偶数时:330x200,没有模糊:

330x200

使用奇数 330x201,再次模糊:

330x201

有谁知道如何解决这个问题?

c# wpf xaml blur

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

标签 统计

c# ×6

wpf ×4

xaml ×2

blur ×1

removable ×1

resourcedictionary ×1

slide ×1

usb ×1

uwp ×1

window ×1

wmi ×1

xbind ×1