【问题标题】:Set value (int) to checke radio button wpf设置值(int)以检查单选按钮 wpf
【发布时间】:2014-03-14 03:07:05
【问题描述】:

希望你能帮我解决这个问题:)

我想:为四个不同的单选按钮提供以下值:30、50、100 和 200(现在的值是什么并不重要)。现在我需要进入代码并更改我自己的数字。我希望这些单选按钮在选中时能够完成工作。

我将在此处粘贴代码。在向我解释这一点时,您能否非常特别(如果您可以并且愿意这样做)。

谢谢!

        //Method for establishing connection to database.      
        // Sette parameter for limit
        public static MongoDatabase GetDatabase(string searchText)

        {
           /* try
            {*/
                TweetOC.Clear();

                MongoServerSettings settings = new MongoServerSettings();
                settings.Server = new MongoServerAddress("xxxx", xxxx);
                MongoServer server = new MongoServer(settings);
                MongoDatabase database = server.GetDatabase("tweet_database");
                var collection = database.GetCollection<Tweets>("docs");
                System.Console.WriteLine("5");
                var query = Query.And(Query.Matches("text", searchText),
           Query.NE("geo_enabled", false));

                System.Console.WriteLine("6");
                //var match = Query.ElemMatch("text", query);
                var cursor = collection.Find(query);
            cursor.SetLimit(30);
            System.Console.WriteLine("7");


                //Puts the result from the last query into a list.
                var resultList = cursor.ToList();

                //Iterates over the previous mentioned list and inserts the content into the ObservableCollcetion created earlier.
                foreach (var item in resultList)
                    TweetOC.Add(item);
                System.Console.WriteLine(TweetOC.Count);






                return database;
            }

我必须始终(手动)更改 CURSOR.LIMIT。我希望在选中单选按钮时自动更改此数字。

方法和 XAML 如下:

// I want this to be if radiobutton is 20, then this should be sent to cursor.set limit. I cannot make another string in database.cs without getting an error.
    /*  Private void RadioButton_Checked(object sender, RoutedEventArgs e)
         {
             var radioButton = sender as RadioButton;
             if (radioButton == 20)
                 return;
             int intIndex = Convert.ToInt32(radioButton.Content.ToString(Cursor.SetLimit));

         }
     * Remember Checked="RadioButton_Checked" in the XAML if you want to try
         */

四个按钮之一的 XAML:

<RadioButton Content="RadioButton" Grid.Column="2" HorizontalAlignment="Left" 
             Margin="20,116,0,0" Grid.Row="2" VerticalAlignment="Top"/>

实际上应该如何让它发挥作用?请编辑代码(如果您打扰的话),以便我看到并理解这一点。

再次感谢!

【问题讨论】:

  • 全部大写会让你看起来像是在对别人大喊大叫
  • 哈哈,对不起。只是想让 thext 真正“出现”。希望没有冒犯。
  • 大写字母不仅与大喊大叫相关,而且难以阅读。如果你是游戏玩家,你会知道的。

标签: c# wpf xaml


【解决方案1】:

要以对 MVVM 友好的方式执行此操作,请像这样绑定 IsChecked 属性:

IsChecked="{Binding Path=CursorLimit, Converter={StaticResource ParamToIntConverter}, ConverterParameter=10}"

当然,将参数设置为给定单选按钮的正确值。如果您不熟悉转换器,则需要在资源中添加一行(假设您已将本地 xmlns 设置为指向转换器命名空间):

<local:ParamToIntConverter x:Key="ParamToIntConverter"/>

那么你的转换器看起来像:

public class ParamToIntConverter : IValueConverter
{
   public object Convert (...)
   {
       return value.Equals(int.Parse((string)parameter));
   }

   public object ConvertBack(...)
   {
       if ((bool)value)
          return int.Parse((string)parameter);
       else
          return Binding.DoNothing;
   }
}

【讨论】:

    【解决方案2】:

    您的 xmal 代码:

    <RadioButton Content="RadioButton" Grid.Column="2" HorizontalAlignment="Left" 
                 Margin="20,116,0,0" Grid.Row="2" VerticalAlignment="Top" Checked="RadioButton_Checked" />
    

    您的 *.cs 代码:

    private void RadioButton_Checked(object sender, RoutedEventArgs e)
    {
        // ... do what you need for this button
    }
    

    在您的 *.cs 文件中使用具有相同方法名称的不同 Checked="[insert_method_name]" 模板,并在每个方法中执行您需要的操作。

    您也可以尝试按照http://www.dotnetperls.com/radiobutton-wpf 示例中的方式进行操作。

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2013-02-26
      • 2015-03-22
      • 2017-10-25
      • 2015-03-22
      • 2014-04-12
      相关资源
      最近更新 更多