将值(int)设置为选中的单选按钮wpf

时间:2014-03-13 18:41:33

标签: c# wpf xaml

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

我想要:给四个不同的单选按钮提供以下值: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"/>

这应该如何实现它的工作?请编辑代码(如果你烦心的话)我可以看到并了解这一点。

再次感谢!

2 个答案:

答案 0 :(得分:2)

要以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;
   }
}

答案 1 :(得分:0)

您的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示例进行操作。