小编Ofi*_*fir的帖子

如何获得ProgramFiles路径?

我有奇怪的问题.

我使用的是Windows 7企业版sp1 64位.

我需要为我的项目获取程序文件和程序文件X86目录路径.这就是我所做的:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
Run Code Online (Sandbox Code Playgroud)

但这两行都返回程序文件X86文件夹.

我该如何解决?

c#

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

在视图加载WPF MVVM后执行命令

我有一个基于项目的WPF和MVVM.我的项目基于一个包含内容控件的向导,该控件显示我的视图(用户控件)我想在完全加载视图后执行命令,我希望用户在执行命令后立即查看视图UI.

我试过用:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
        <i:InvokeCommandAction Command="{Binding StartProgressCommand}"/>
    </i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

但是在我看到视图UI之前执行该命令并且它不是我正在寻找的.

有谁知道我应该如何实现它?

wpf triggers command mvvm

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

如何刷新MVVM WPF中的UI

我的项目基于MVVM模式.

我已经构建了一个显示我的文件系统的树视图.每个文件夹都有一个用于选择当前文件夹的复选框 选择过程需要一些时间,因此在操作运行时,有一个禁用的按钮,在操作结束时我启用按钮.

我的问题是,当按钮被"禁用"时,我会立即看到它.但是,当按钮返回启用模式时,我必须执行一些操作(如鼠标单击)以查看启用的按钮.

如何确保在启用按钮后立即更新UI?

这些是我的按钮:

<Button Content="&lt;- Back" Margin="5,0,5,0" Width="80" Height="25"
        IsEnabled="{Binding CanMoveToPreviousPage, UpdateSourceTrigger=PropertyChanged}" 
        Command="{Binding Path=NavigateBackCommand, IsAsync=True}" />

<Button Content="{Binding ButtonNextCaption}" Margin="5,0,5,0" Width="80" Height="25"
        IsEnabled="{Binding CanMoveToNextPage, UpdateSourceTrigger=PropertyChanged}" 
        Command="{Binding Path=NavigateNextCommand, IsAsync=True}" />
Run Code Online (Sandbox Code Playgroud)

在我的ViewModel中,我添加了以下代码:

public bool CanMoveToNextPage
{
    get
    {
        return this.CurrentPage != null && this.CurrentPage.CanMoveNext;
    }
    set
    {
        if (CurrentPage != null)
        {
            this.CurrentPage.CanMoveNext = value;
            OnPropertyChanged("CanMoveToNextPage");
        }
    }
}

public bool CanMoveToPreviousPage
{
    get { return 0 < this.CurrentPageIndex && CurrentPage.CanMoveBack; }
    set
    {
        if (CurrentPage != …
Run Code Online (Sandbox Code Playgroud)

wpf user-interface refresh mvvm

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

wpf DataGrid - 已添加具有相同键的项

我看到很多与此问题相关的帖子,但我找不到解决方案

我有下一个WPF DataGrid:

<DataGrid Grid.Column="1"
          Grid.Row="4"
          AutoGenerateColumns="False"
          ItemsSource="{Binding MapsGrid}"
          SelectedItem="{Binding DataContext.CategoriesSelectedRow, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Mode=OneWayToSource}"
          SelectionMode="Single"
          CanUserReorderColumns="False"
          CanUserResizeColumns="False"
          CanUserDeleteRows="False"
          CanUserResizeRows="False"
          CanUserAddRows="False">
  <DataGrid.Columns>
    <DataGridTemplateColumn Header="Main Category"
                            Width="*">
      <DataGridTemplateColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
          <Setter Property="HorizontalContentAlignment"
                  Value="Center" />
          <Setter Property="FontSize"
                  Value="16" />
        </Style>
      </DataGridTemplateColumn.HeaderStyle>
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <ComboBox ItemsSource="{Binding MainCategoriesColl}"
                    DisplayMemberPath="Category"
                    SelectedItem="{Binding MainCategorySelectedItem,UpdateSourceTrigger=LostFocus, Mode=OneWayToSource}" />
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

    <DataGridTemplateColumn Header="Sub Category"
                            Width="*">
      <DataGridTemplateColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
          <Setter Property="HorizontalContentAlignment"
                  Value="Center" />
          <Setter Property="FontSize"
                  Value="16" />
        </Style>
      </DataGridTemplateColumn.HeaderStyle>
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <ComboBox ItemsSource="{Binding SubCategoriesColl}"
                    DisplayMemberPath="Category"
                    SelectedItem="{Binding SubCategorySelectedItem,  UpdateSourceTrigger=LostFocus, Mode=TwoWay}" /> …
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid mvvm

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

如何保持活动用户控制?

我有与包含用户控件的 ContentControl 一起使用的向导项目。我通过主窗口中的 XAML 文件进行实例化:

    <DataTemplate DataType="{x:Type ViewModel:OpeningViewModel}">
        <view:OpeningView/>
   </DataTemplate>

    <DataTemplate DataType="{x:Type ViewModel:SecondUCViewModel}">
        <view:SecondUCView/>
    </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

但是当我在 UC 之间导航时,UC 似乎不像“保持活动”那样工作,每次 UC 切换都会创建新实例。我怎样才能避免它?我想为每个 UC 只创建一个实例,并且只在这些实例之间导航而不创建新实例。

我知道如何编写单例,但我的项目基于 MVVM,而且我对 WPF 还很陌生,所以我不确定这样做的最佳方法是什么。

谢谢

更新:

这里是 viewModel 的代码:

在 viewModel 我有:

私有 ObservableCollection _pages = null; 私人 NavigationBaseViewModel _currentPage;

    #endregion

    #region Properties

    public int CurrentPageIndex
    {
        get
        {
            if (this.CurrentPage == null)
            {
                return 0;
            }
            return _pages.IndexOf(this.CurrentPage);
        }
    }

    public NavigationBaseViewModel CurrentPage
    {
        get { return _currentPage; }

        private set
        {
            if (value == _currentPage) …
Run Code Online (Sandbox Code Playgroud)

wpf keep-alive mvvm

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

一个控件的多个dataContext - MVVM

我不确定我的问题标题是否代表我的问题,我会尽力解释:

我有一个网格单元DataTemplate :(该网格属于第三方公司,但对我的问题并不重要)

<DataTemplate>
    <TextBlock>
        <Hyperlink Command="{Binding OpenLinkCommand}"> 
            <Hyperlink.ToolTip>
                <TextBlock Text="{Binding Data.MapLink}"/>
            </Hyperlink.ToolTip>
            <TextBlock Text="{Binding Data.MapLink}" TextDecorations="underline">
        </Hyperlink>
    </TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我想让这个DataTemplate显示一些超链接("Data.MapLink"是包含链接值的对象),每次单击此链接将触发命令"OpenLinkCommand".

问题是"Data.MapLink"和"OpenLinkCommand"位于不同的dataContext中,然后我必须选择以下选项之一:

  1. 保留超链接dataContext作为它 - 命令不会工作,超链接将获得Data.MapLink值.

  2. 将超链接dataContext更改为命令datacontext - 该命令将起作用,但超链接名称将为空.

遗憾的是我没有选择将这些项放在同一个dataContext中,所以我必须找到一种方法告诉命令它dataContext是"X"并告诉hyperLink它dataContext是"Y".

我希望我的问题很清楚如何解决这个问题?

wpf datacontext mvvm

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

避免运行多个实例

我正在尝试设置一个互斥锁,以便只允许在一个实例中运行我的应用程序.我写了下一个代码(如其他帖子中的建议)

 public partial class App : Application
    {

        private static string appGuid = "c0a76b5a-12ab-45c5-b9d9-d693faa6e7b9";

        protected override void OnStartup(StartupEventArgs e)
        {
            using (Mutex mutex = new Mutex(false, "Global\\" + appGuid))
            {

                if (!mutex.WaitOne(0, false))
                {
                    MessageBox.Show("Instance already running");
                    return;
                }

                base.OnStartup(e);

               //run application code
            }
        }

    }
Run Code Online (Sandbox Code Playgroud)

遗憾的是这段代码不起作用.我可以在多个实例中启动我的应用程序.有人知道我的代码有什么问题吗?谢谢

c# wpf mutex

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

为什么这个C#正则表达式不起作用?

我试着写一个表达式来验证以下模式:

数字[0-9] 1次正好
"点"
数字[0-9] 1-2次
"点"
数字[0-9] 1-3次
"点"
数字[0-9] 1-3次或"连字符"

例如,这些是合法的数字:

1.10.23.5
1.10.23.-
Run Code Online (Sandbox Code Playgroud)

这些不是:

10.10.23.5
1.254.25.3
Run Code Online (Sandbox Code Playgroud)

我使用RegexBuddy编写下一个模式:

[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.-
Run Code Online (Sandbox Code Playgroud)

在RegexBuddy中,一切看起来都很完美,但在我的代码中我对非法数字(如10.1.1.1)的看法是正确的

我写了下一个验证这个模式的方法:

 public static bool IsVaildEc(string ec)
        {
            try
            {
                if (String.IsNullOrEmpty(ec))
                    return false;
                string pattern = @"[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.-";
                Regex check = new Regex(pattern);
                return check.IsMatch(ec);
            }
            catch (Exception ex)
            {
                //logger
            }
        }
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c# regex c#-4.0

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

检查Windows 8中是否激活了图片密码

我需要编写一个脚本来验证用户是否在Windows 8中使用"图片密码"功能.我正在使用.NET 4.

我试图搜索有关它的信息,但找不到任何东西.你有什么想法可以做到吗?

.net c# windows-8

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

以编程方式确定是否启用了Windows 8安全启动

我正在编写一个安全应用程序,用于验证用户计算机上的许多安全规则和策略.我需要实现一个测试方法,该方法在启用Windows 8的安全启动功能时返回true ,或在禁用时返回false.

我搜索了信息,我看到这是一个BIOS功能.所以我的问题是:是否可以使用C#代码获取Windows 8安全启动的状态?如果有,怎么样?

从BIOS安全启动


更新:请参阅@ magicandre1981的答案,重要的是要提到状态注册表项仅在支持安全启动功能时存在.如果您在计算机上找不到此密钥,则可能是您的计算机不支持安全启动.

检查安全启动状态/支持转到运行 - > msinfo32.exe并搜索"安全启动状态"

.net c# security winapi windows-8

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