小编Mik*_*ard的帖子

WPF中的自定义IServiceProvider

是否可以IServiceProvider在WPF中添加自定义以用于标记扩展?
我没有找到任何相关的文档或示例.

wpf

14
推荐指数
1
解决办法
714
查看次数

在F#中测试空引用

鉴于以下内容:

[<DataContract>]
type TweetUser = {
    [<field:DataMember(Name="followers_count")>] Followers:int
    [<field:DataMember(Name="screen_name")>] Name:string
    [<field:DataMember(Name="id_str")>] Id:int
    [<field:DataMember(Name="location")>] Location:string}

[<DataContract>]
type Tweet = {
    [<field:DataMember(Name="id_str")>] Id:string
    [<field:DataMember(Name="text")>] Text:string
    [<field:DataMember(Name="retweeted")>] IsRetweeted:bool
    [<field:DataMember(Name="created_at")>] DateStr:string
    [<field:DataMember(Name="user", IsRequired=false)>] User:TweetUser
    [<field:DataMember(Name="sender", IsRequired=false)>] Sender:TweetUser
    [<field:DataMember(Name="source")>] Source:string}
Run Code Online (Sandbox Code Playgroud)

反序列化DataContractJsonSerializer(typeof<Tweet[]>)将导致User或Sender字段为空(至少是调试器告诉我的那个).

如果我尝试写下面的内容:

    let name = if tweet.User <> null 
                  then tweet.User.Name
                  else tweet.Sender.Name
Run Code Online (Sandbox Code Playgroud)

编译器发出错误:"类型'TweetUser'没有'null'作为正确的值"

在这种情况下如何测试空值?

f#

13
推荐指数
2
解决办法
4226
查看次数

D3对数刻度标签为10的力量

使用D3我想创建一个如下所示的X轴:

所需的日志刻度标签的图像

我已经弄清楚如何做轴和刻度,但不是使用以下标签:

var svgWidth = 500;
var svgHeight = 500;
var svgAxisPadding = 20;

var xScale = d3.scale.log()
  .domain([Math.pow(10, 5), Math.pow(10, 7)])
  .range([svgAxisPadding, svgWidth - svgAxisPadding]);

var xAxis = d3.svg.axis()
  .scale(xScale)
  .orient('bottom')
  .ticks(0, "e");

var svg = d3.select('#diagram')
  .append('svg')
  .attr('width', svgWidth)
  .attr('height', svgHeight);

svg.append('g')
  .attr("class", "axis")
  .call(xAxis);
Run Code Online (Sandbox Code Playgroud)

这里有一个完整代码的jsFiddle.

javascript d3.js

10
推荐指数
1
解决办法
5086
查看次数

是否存在没有jQuery的ng-repeat重新排序拖放

任何人都有一些代码来重新排序ng-repeat使用拖放不需要jQuery?(仅限angularjs依赖)

angularjs-ng-repeat

10
推荐指数
1
解决办法
7254
查看次数

动画插入到ItemsControl

我有时候发现WPF难以理解.给定以下XAML,如何添加触发器以动画(向下滑动,淡入)添加到ObservableCollection时间轴的新项目.我已经看到了列表框的各种示例,但没有项目控制.

<Grid>
    <ScrollViewer>
        <ItemsControl Name="TimelineItem"
                      ItemsSource="{Binding Timeline}"
                      Style="{StaticResource TimelineStyle}"
                      ItemContainerStyle="{StaticResource TweetItemStyle}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid VerticalAlignment="Top"
                          HorizontalAlignment="Left">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Style="{StaticResource TweetImageColumnStyle}" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Rectangle Grid.Column="0"
                                   Style="{StaticResource TweetImageStyle}">
                            <Rectangle.Fill>
                                <ImageBrush ImageSource="{Binding ProfileImageUrl}" />
                            </Rectangle.Fill>
                        </Rectangle>
                        <StackPanel Grid.Column="1">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0"
                                           Style="{StaticResource TweetNameStyle}"
                                           Text="{Binding Name}" />
                                <TextBlock Grid.Column="1"
                                           Style="{StaticResource TweetTimeStyle}"
                                           Text="{Binding TimeAgo}" />
                            </Grid>
                            <Controls:TextBlockMarkup Grid.Row="1"
                                                      Grid.Column="1"
                                                      Markup="{Binding MarkupText}"
                                                      Style="{StaticResource TweetStyle}" />
                        </StackPanel> …
Run Code Online (Sandbox Code Playgroud)

wpf animation

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

将 C#8 的方法识别为可空检查器?

我经常使用扩展方法来检查方法参数

void MyMethod(string? test)
{
    Require.NotNull(test, nameof(test));
    // Same as
    // if (test == null) throw new ArgumentNullExeception(nameof(test))

    ...
}
Run Code Online (Sandbox Code Playgroud)

nullables但是,当启用 C# 8时,编译器认为我在使用扩展方法时没有检查 null 参数。

有没有办法将扩展方法识别Require.NotNullnullable检查器?

c# nullable

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

带有多个语句的F#lambda表达式

我正在学习F#,发现我写的是有用的,但我并不完全理解.这是一个例子

let processArgs args =
    match args with
    | null
    | [||]          -> [fun() -> getCredentials(); home 20; mentions 20; messages 20]
    | [|"-h"|] 
    | [|"-?"|]      -> [showHelp]
    | [|"-reset"|]  -> [clearAllSettings]
    | _             -> [fun() -> printfn "%s" (String.Join(" ", args))]

[<EntryPoint>]
    let main (args:string[]) =
    try
        let actions = processArgs args
        List.iter (fun action -> action()) actions
        0
    finally
        Console.ResetColor()
        Console.CursorVisible <- true
Run Code Online (Sandbox Code Playgroud)

getCredentials,home,mentions,messages,showHelp和clearAllSettings方法都是简单的函数,可以满足您的期望.(是的,这是一个Twitter客户端,是不是新的'Hello World'演示?)

这条线:

[fun() -> getCredentials(); home 20; mentions 20; messages 20]
Run Code Online (Sandbox Code Playgroud)

像我想的那样工作.它调用getCredentials,然后调用home,然后提及消息

从我的角度来看,分号就像一个语句分隔符.我以前没见过这个.那是怎么回事?

是否有一种更惯用的写作方式(换句话说,一个经验丰富的F#程序员在他/她看到这个时会笑在地板上)? …

f#

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

为什么Entity Framework在删除时不会重新创建我的localdb?

使用实体框架6使用模型首次设置

  • 未指定连接字符串.
  • 简单的单一类POCO用于模型.

运行应用程序,创建数据库 活泉!

删除App_Data文件夹中的.mdf/.ldf.

运行应用程序,数据库连接错误

为什么不重新创建数据库?

PS尝试过如何为Entity Framework重新创建数据库?但它不起作用.

那么我如何说服EF重新创建数据库(为什么这会很难?)?

c# entity-framework localdb

5
推荐指数
2
解决办法
2415
查看次数

为什么有些函数式语言不为函数参数使用括号?

我一直在尝试在我的编程中采用一种函数式语言。我使用 C# 并严重依赖 LINQ 和其他函数式构造。目前我专注于榆树。

继续困扰我的一件事是函数中缺少括号。数学表达式使用它们:

f(z) = ln(z) + 1
Run Code Online (Sandbox Code Playgroud)

然而,在许多函数式语言中,这被写为:

f z = ln z + 1
Run Code Online (Sandbox Code Playgroud)

这只是一种风格,还是这里有更深层次的东西?

functional-programming

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

将轮询Web服务转换为RX

鉴于:

public partial class Weather
{
    private readonly DispatcherTimer _timer = new DispatcherTimer();
    private readonly IWeatherDataProvider _weatherDataProvider;

    public Weather(IWeatherDataProvider weatherDataProvider)
    {
        InitializeComponent();
        _weatherDataProvider = weatherDataProvider;
        Loaded += async (sender, args) =>
        {
            _timer.Interval = new TimeSpan(0, 15, 0);
            _timer.Tick += async (o, eventArgs) => DataContext = await UpdateWeather();
            _timer.Start();
            DataContext = await UpdateWeather();
        };

        Unloaded += (sender, args) => _timer.Stop();
    }

    private async Task<WeatherData> UpdateWeather()
    {
        var weatherData = await _weatherDataProvider.GetWeather();
        return weatherData;
    }
}
Run Code Online (Sandbox Code Playgroud)

我很困惑如何转换这个使用Reactive Extensions.我开始时:

var weather = …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

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