小编Cle*_*ens的帖子

即使文件夹已被删除,DirectoryInfo.Exists 也会返回 true

我正在创建一个临时文件夹,其中有一个文件夹,位于用户在应用程序启动时选择的文件夹中。我创建了一个删除按钮,当用户使用该应用程序时,它应该删除在其中创建的临时文件夹和文件。

我首先单击删除按钮并删除文件和文件夹,如果我再次单击删除按钮,DirectoryInfo.Exist 方法仍然返回 true,即使我作为参数输入的文件夹不再存在,并且由于它true 我收到一个错误,因为它试图删除一个不存在的文件夹。

我很感激任何帮助:)

C#

if (FilePaths.mainDirectory.Exists)
{
    if (DirectoryNotEmpty(FilePaths.mainDirectory.FullName))
    {
        if (DirectoryNotEmpty(FilePaths.actionDirectory.FullName))
        {
            foreach (var file in FilePaths.actionDirectory.GetFiles()) file.Delete();
        }
        Directory.Delete(FilePaths.actionDirectory.FullName);

        foreach (var file in FilePaths.mainDirectory.GetFiles()) file.Delete();
        Directory.Delete(FilePaths.mainDirectory.FullName);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 DirectoryInfo 对象的实例化

public static string mainFolder = "";
public static string actionFolder = "";
public static DirectoryInfo mainDirectory;
public static DirectoryInfo actionDirectory;

public static void CreateTemporaryFolders()
{
    if (mainFolder != "")
    {
        actionFolder = Path.Combine(mainFolder, "Action Files");

        mainDirectory = new DirectoryInfo(mainFolder);
        actionDirectory = new DirectoryInfo(actionFolder);
    } …
Run Code Online (Sandbox Code Playgroud)

c#

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

附属物+风格 - > ArgumentNullException

我创建了一个非常简单的附加属性:

public static class ToolBarEx 
{
    public static readonly DependencyProperty FocusedExProperty =
        DependencyProperty.RegisterAttached(
            "FocusedEx", typeof(bool?), typeof(FrameworkElement),
            new FrameworkPropertyMetadata(false, FocusedExChanged));

    private static void FocusedExChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        if (d is ToolBar)
        {
            if (e.NewValue is bool)
            {
                if ((bool)e.NewValue)
                {
                    (d as ToolBar).Focus();
                }
            }
        }
    }

    public static bool? GetFocusedEx(DependencyObject obj)
    {
        return (bool)obj.GetValue(FocusedExProperty);
    }

    public static void SetFocusedEx(DependencyObject obj, bool? value)
    {
        obj.SetValue(FocusedExProperty, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

在Xaml中设置它可以很好地工作,但是如果我尝试在Style中设置它:

我在运行时收到一个ArguemntNullException(说:"值不能为null.参数名称:property").

我无法弄清楚这里有什么问题.任何提示都是适当的!

c# wpf triggers styles

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

如何为多个目标对象使用故事板?

我有ac #class,让我们来称呼它TwoButtonsHolder.在本课程中,我有2个UIElements想使用StoryBoards进行动画制作.让我们把它们ButtonAButtonB.因为我想让它们同时具有动画效果,所以我决定将所有动画放在一个Storyboard对象中(或者有更好的方法吗?).所以现在我正在尝试在代码背后创建storyboard对象,但我陷入了必须定义目标属性的部分.通常,当我声明动画时,我使用这样的代码来设置属性

Storyboard.SetTargetProperty(myDoubleAnimation,
                             new PropertyPath(UIElement.OpacityProperty));
Run Code Online (Sandbox Code Playgroud)

现在我在TwoButtonsHolder类型的目标Object中有UIElement.如何创建故事板并将动画目标属性设置为TwoButtonsHolder.ButtonA.UIElement.OpacityProperty?这是一个糟糕的设计,使用单个故事板为多个对象设置动画,以便同时运行动画吗?(仅供参考,我想在代码中尝试这个,不想进入XAML,因为我发现它太复杂,很难学习恕我直言).谢谢

编辑:只想添加2个按钮有不同的动画,我把它们放在同一个故事板中的唯一原因是让他们同时开始制作动画

c# wpf storyboard

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

在ListView xaml uwp中缺少垂直滚动

我是UWP的新手,需要使用导航抽屉SplitView,所以我的基本布局结构如下所述.问题是我没有列表项的垂直滚动,也许我想念一些参数,任何帮助表示赞赏.

 <SplitView
    x:Name="MySplitView"
    DisplayMode="CompactOverlay"
    IsPaneOpen="True"
    CompactPaneLength="50"
    OpenPaneLength="280">

    <!--navigation drawer-->
    <SplitView.Pane>
        <StackPanel
            Background="Gray">

            <StackPanel>

                <ListView
                    x:Name="DrawerListOptions"
                    SelectionChanged="MySelectionChanged"
                    SelectionMode="Single"
                    ScrollViewer.VerticalScrollBarVisibility="Auto">

                    <ListView.ItemTemplate>
                        <DataTemplate>

                                    <TextBlock
                                        Text="{Binding Title}"
                                        FontSize="18"
                                        Margin="5,0,0,0" />


                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

            </StackPanel>

        </StackPanel>

    </SplitView.Pane>

    <!--page stuff-->
    <SplitView.Content>
         <!--page code-->
    </SplitView.Content>

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

xaml win-universal-app

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

按下按钮后,动态地将UI元素添加到StackPanel

这是我在这里的第一个问题:)我不是一个专业的程序员,我只有18岁而且我没有在大学或任何地方学习过,所以如果我说些愚蠢的话,请不要恨我:p

我正在制作(或者更确切地说是......)一个适用于Windows 10 UWP的应用程序,我的一段xaml代码如下所示:

<Grid Grid.Row="1" Grid.Column="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="12"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="12"/>
            </Grid.RowDefinitions>
            <Rectangle Margin="0" Grid.Row="1" Fill="White" RadiusX="7" RadiusY="7"/>

            <Grid Grid.Row="1" Margin="12,6">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>

                <StackPanel>

                        <TextBox x:Name="textProduct" Margin="0,6,6,6" TextWrapping="Wrap"  VerticalAlignment="Top" BorderBrush="#FFCECED2" FontFamily="Segoe UI Light" FontSize="17" PlaceholderText="Produkt..." BorderThickness="1"/>

                </StackPanel>

                <StackPanel Grid.Column="1">
                    <TextBox x:Name="textAdditionalInfo" Margin="6,6,0,6" TextWrapping="Wrap"  VerticalAlignment="Top" BorderBrush="#FFCECED2" FontFamily="Segoe UI Light" FontSize="17" PlaceholderText="Dodatkowe info..." BorderThickness="1"/>
                </StackPanel>

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

我的底部还有一个应用栏,带有添加和删除按钮.我希望每次用户按下"添加"按钮时都能向两个StackPanel动态添加另一行TextBox,并在每次按下"删除"按钮时删除一行.不幸的是,我不知道如何实现这一目标.我试图找到答案,我认为这可以通过使用UserControl完成,但我不知道如何实现这一点.

我希望这不是太复杂,因为我不希望看到像一个人要求其他人为我做我所有的工作......

如果这是一个大问题,那么它甚至不需要支持删除TextBoxes.

我希望你明白我的意思.我不是英国人,对任何错误都很抱歉;)

c# win-universal-app uwp-xaml

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

WPF - 保存画布周围的黑色背景为 jpeg

我在使用 JpegBitmapEncoder 时遇到困难,因为它正在创建放置在黑色矩形中的图像。而且我没有修复的解决方案。

 private void SaveImage(Canvas canvas, string fileName)
    {
        SaveFileDialog s = new SaveFileDialog();
        s.FileName = "Pic";
        s.DefaultExt = ".jpg";
        s.Filter = "JPG files (.jpg)|*.jpg";

        Nullable<bool> result = s.ShowDialog();
        if (result == true)
        {
            RenderTargetBitmap renderBitmap = new RenderTargetBitmap(6646, 3940, 2000d, 2000d, PixelFormats.Pbgra32);

            canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
            canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));

            renderBitmap.Render(canvas);

            string filename = s.FileName;
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(renderBitmap));

            using (FileStream file = File.Create(filename))
            {
                encoder.Save(file);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

通过这段代码我得到:

在此输入图像描述

但是当我使用 PngBitmap Encoder 时,这种情况不会发生。任何人都可以发光吗?如何删除黑色矩形或通过增加图片的尺寸来填充它?

wpf jpeg encoder bitmap

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

如果在等待异步调用之后设置,则不在UI中更新UWP布尔值

我的UWP应用程序中有一个公共布尔值,用于显示/隐藏ProgressBar.我在其他地方使用了相同的模式,它似乎工作正常,但我在特定页面上遇到问题,只有在我等待异步调用后设置布尔值时才会在UI中更新它(同样的)模式作为工作页面).

这是我的XAML视图:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <TextBlock Text="{ x:Bind Vm.IsLoaded }" Margin="112,272,-112,-272"></TextBlock>
</Grid>
Run Code Online (Sandbox Code Playgroud)

而代码隐藏:

public sealed partial class MainPage : Page
{
    public MainPageViewModel Vm => DataContext as MainPageViewModel;
    public MainPage()
    {
        this.InitializeComponent();
        this.DataContext = new MainPageViewModel();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        Vm.GetProjectData();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的MainPageViewModel.cs

public class MainPageViewModel : ViewModel
{
    public ObservableCollection<Project> Projects { get; set; } = new ObservableCollection<Project>();

    private bool _isLoaded;
    public bool IsLoaded
    {
        get { return _isLoaded; } …
Run Code Online (Sandbox Code Playgroud)

c# xaml async-await uwp

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

WPF-隐藏ItemControl-&gt; UniformGrid中的项目,使其不占用基于数据绑定的UI空间

数据绑定到ObservableCollection,我正在ItemsControlButtons。我正在UniformGrid用来帮助均匀分布对象,无论对象中有5个还是5000个对象ObservableCollection

需求:用户搜索/过滤之后ObservableCollection,我想更新商品的IsVisible属性以显示/隐藏它们...同时还要巩固空间。

原理:我认为,从性能角度考虑,更新属性要比执行Clear()and循环将过滤后的项目重新添加回databound 更好ObservableCollection

问题:尽管当前的实现(下面的代码)确实隐藏了按钮,但无论Visibility我尝试使用哪个属性,它们仍然占据着空间。

免责声明:我不仅仅只是简单地“修复”当前代码。例如,如果一个可行的解决方案没有使用UniformGrid例如,但仍然取得了可持续的结果,那么我可能可以使用它!ViewModel侧面也是如此。

<ItemsControl Name="ItemsList"
            Width="Auto"
            HorizontalContentAlignment="Left"
            ItemsSource="{Binding ItemsVM.WorkList}"
            ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="true"
            VirtualizingStackPanel.VirtualizationMode="Standard"
            >
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="5" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button
                        Width="250" Height="50"
                        FontSize="18" FontWeight="Bold"
                        Background="{Binding TextColor, Converter={StaticResource TextToColorConvert}, UpdateSourceTrigger=PropertyChanged}"
                        Margin="1,1,1,1" HorizontalAlignment="Center" VerticalAlignment="Center"
                        BorderBrush="WhiteSmoke" BorderThickness="0" Click="workNumSelect"
                        Content="{Binding Workload.WorkNum}"
                        Cursor="Hand" Opacity=".8"
                        Visibility="{Binding IsVisible, Converter={StaticResource BoolToCollapsedVisConvert}, UpdateSourceTrigger=PropertyChanged}"
                        />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <ItemsControl.Template>
                <ControlTemplate TargetType="ItemsControl"> …
Run Code Online (Sandbox Code Playgroud)

c# wpf datatemplate observablecollection mvvm

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

如何解决“无法使用通用身份验证连接到设备‘127.0.0.1’”?

每次尝试将 UWP 应用程序部署到本地设备时,我都会收到此错误。

Severity Code Description Project File Line Suppression State Error DEP6957: Failed to connect to device '127.0.0.1' using Universal Authentication. Please verify the correct remote authentication mode is specified in the project debug settings. COMException - No connection could be made because the target machine actively refused it. (Exception from HRESULT: 0x8007274D) [0x8007274D] Voip

我对如何解决此问题的想法完全为零,因为似乎遇到此问题的其他所有人都在尝试连接到远程设备。

uwp

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

由于对象已密封或冻结,因此无法设置颜色属性的动画

我已经看过其他类似的问题,但是他们似乎总是在XAML中这样做,因为这是在事件处理程序中,所以我需要找出c#中的答案。基本上,我只需要发送菜单项闪烁红色即可。

ColorAnimation ca = new ColorAnimation()
{
    From = Color.FromRgb(0, 0, 0),
    To = Color.FromRgb(255,0,0),
    AutoReverse = true,
    RepeatBehavior = new RepeatBehavior(3),
    Duration=new Duration(TimeSpan.FromSeconds(.5))
};
(sender as MenuItem).Foreground.BeginAnimation(SolidColorBrush.ColorProperty, ca);
Run Code Online (Sandbox Code Playgroud)

c# wpf coloranimation

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